电脑只能通过boot进去开机进去boot后显示2项 1(boot conf iguration)2(boot opt

4296人阅读
Java(10)
1、自动化配置
& & &Spring Boot 对于开发人员最大的好处在于可以对 Spring 应用进行自动配置。Spring Boot 会根据应用中声明的第三方依赖来自动配置 Spring 框架,而不需要进行显式的声明。比如当声明了对 HSQLDB 的依赖时,Spring Boot 会自动配置成使用 HSQLDB 进行数据库操作。
Spring Boot 推荐采用基于 Java 注解的配置方式,而不是传统的 XML。只需要在主配置 Java 类上添加“@EnableAutoConfiguration”注解就可以启用自动配置。Spring Boot 的自动配置功能是没有侵入性的,只是作为一种基本的默认实现。开发人员可以通过定义其他 bean 来替代自动配置所提供的功能。比如当应用中定义了自己的数据源 bean 时,自动配置所提供的 HSQLDB 就不会生效。这给予了开发人员很大的灵活性。既可以快速的创建一个可以立即运行的原型应用,又可以不断的修改和调整以适应应用开发在不同阶段的需要。可能在应用最开始的时候,嵌入式的内存数据库(如
HSQLDB)就足够了,在后期则需要换成 MySQL 等数据库。Spring Boot 使得这样的切换变得很简单。
2、外部化的配置
& & &在应用中管理配置并不是一个容易的任务,尤其是在应用需要部署到多个环境中时。通常会需要为每个环境提供一个对应的属性文件,用来配置各自的数据库连接信息、服务器信息和第三方服务账号等。通常的应用部署会包含开发、测试和生产等若干个环境。不同的环境之间的配置存在覆盖关系。测试环境中的配置会覆盖开发环境,而生产环境中的配置会覆盖测试环境。Spring 框架本身提供了多种的方式来管理配置属性文件。Spring 3.1 之前可以使用 PropertyPlaceholderConfigurer。Spring 3.1
引入了新的环境(Environment)和概要信息(Profile)API,是一种更加灵活的处理不同环境和配置文件的方式。不过 Spring 这些配置管理方式的问题在于选择太多,让开发人员无所适从。Spring Boot 提供了一种统一的方式来管理应用的配置,允许开发人员使用属性文件、YAML 文件、环境变量和命令行参数来定义优先级不同的配置值。
& & & Spring Boot 所提供的配置优先级顺序比较复杂。按照优先级从高到低的顺序,具体的列表如下所示。
命令行参数。
通过 System.getProperties() 获取的 Java 系统参数。
操作系统环境变量。
从 java:comp/env 得到的 JNDI 属性。
通过 RandomValuePropertySource 生成的“random.*”属性。
应用 Jar 文件之外的属性文件。
应用 Jar 文件内部的属性文件。
在应用配置 Java 类(包含“@Configuration”注解的 Java 类)中通过“@PropertySource”注解声明的属性文件。
通过“SpringApplication.setDefaultProperties”声明的默认属性。
& & & & Spring Boot 的这个配置优先级看似复杂,其实是很合理的。比如命令行参数的优先级被设置为最高。这样的好处是可以在测试或生产环境中快速地修改配置参数值,而不需要重新打包和部署应用。
命令行参数
app.jar --name=&Spring& --server.port=9090方式来传递参数。
SpringApplication 类默认会把以“--”开头的命令行参数转化成应用中可以使用的配置参数,如 “--name=Alex” 会设置配置参数 “name” 的值为 “Alex”.
可以使用的参数可以是我们自己定义的,也可以是Spring Boot中默认的参数。
注意:命令行参数在app.jar的后面!
可以通过SpringApplication.setAddCommandLineProperties(false)禁用命令行配置。
Java系统属性
注意Java系统属性位置java -Dname=&isea533& -jar app.jar,可以配置的属性都是一样的,优先级不同。
例如java -Dname=&isea533& -jar app.jar --name=&Spring!&中name值为Spring.
& & & 有些系统,关于一些数据库或其他第三方账户等信息,由于安全问题,其配置并不会提前配置在项目中暴露给开发人员。&
& & & 对于这种情况,我们在运行程序的时候,可以通过参数指定一个外部配置文件。&
& & & &以 demo.jar 为例,方法如下:&java -jar demo.jar --spring.config.location=/opt/config/application.properties
& & & 其中文件名随便定义,无固定要求。
RandomValuePropertySource&
& & & RandomValuePropertySource 可以用来生成测试所需要的各种不同类型的随机值,从而免去了在代码中生成的麻烦。RandomValuePropertySource 可以生成数字和字符串。数字的类型包含 int 和 long,可以限定数字的大小范围。以“random.”作为前缀的配置属性名称由 RandomValuePropertySource 来生成:
&系统中用到随机数的地方,例如&使用 RandomValuePropertySource 生成的配置属性:
user.id=${random.value}
user.count=${random.int}
user.max=${random.long}
user.number=${random.int(100)}
user.range=${random.int[100, 1000]
random.int*支持value参数和,max参数,当提供max参数的时候,value就是最小值
3、属性文件
3.1 属性配置文件的位置
& & & 属性文件是最常见的管理配置属性的方式。Spring Boot 提供的 SpringApplication 类会搜索并加载 application.properties 或application.yml文件来获取配置属性值。SpringApplication
类会在下面位置搜索该文件。
当前目录的“/config”子目录。
当前目录。
classpath 中的“/config”包。
& & &上面的顺序也表示了该位置上包含的属性文件的优先级。优先级按照从高到低的顺序排列。&&即:/config优先于classpath根目录
& & &&可以通过“spring.config.name”配置属性来指定不同的属性文件名称。也可以通过“spring.config.location”来添加额外的属性文件的搜索路径。如果应用中包含多个 profile,可以为每个 profile 定义各自的属性文件,按照“application-{profile}”来命名。
3.2应用配置文件(.properties或.yml)
& & &在配置文件application.properties&中直接写:
name=Isea533
server.port=8080
& & .yml格式的配置文件如:
name: Isea533
& & port: 8080
当有前缀的情况下,使用.yml格式的配置文件更简单。关于.yml配置文件用法请看
注意:使用.yml时,属性名的值和冒号中间必须有空格,如name: Isea533正确,name:Isea533就是错的。
3.3 @PropertySource优先级比较
这个注解可以指定具体的属性配置文件,优先级比较低。
SpringApplication.setDefaultProperties
SpringApplication application = new SpringApplication(Application.class);
Map&String, Object& defaultMap = new HashMap&String, Object&();
defaultMap.put(&name&, &Isea-Blog&);
//还可以是Properties对象
application.setDefaultProperties(defaultMap);
application.run(args);
3.5 应用程序使用属性@Value(“${xxx}”)
对于配置属性,可以在代码中通过“@Value”来使用,如:
@RestController
@EnableAutoConfiguration
public class Application {
@Value(&${name}&)
@RequestMapping(&/&)
String home() {
return String.format(&Hello %s!&, name);
变量 name 的值来自配置属性中的“name”属性。
比如application.properties有&port=8081&
@Value(&${port:8082}&)
即可获取8081这个值
3.6属性占位符
app.name=MyApp
app.description=${app.name} is a Spring Boot application
可以在配置文件中引用前面配置过的属性(优先级前面配置过的这里都能用)。
通过如${app.name:默认名称}方法还可以设置默认值,当找不到引用的属性时,会使用默认的属性。
由于${}方式会被Maven处理。如果你pom继承的spring-boot-starter-parent,Spring Boot 已经将maven-resources-plugins默认的${}方式改为了@ @方式,例如@name@。
如果你是引入的Spring Boot,你可以修改使用其他的分隔符
3.7通过属性占位符还能缩短命令参数
例如修改web默认端口需要使用--server.port=9090方式,如果在配置中写上:
server.port=${port:8080}
那么就可以使用更短的--port=9090,当不提供该参数的时候使用默认&#。
3.8属性名匹配规则
例如有如下配置对象:
@Component
@ConfigurationProperties(prefix=&person&)
public class ConnectionSettings {
private String firstN
firstName可以使用的属性名如下:
person.firstName,标准的驼峰式命名
person.first-name,虚线(-)分割方式,推荐在.properties和.yml配置文件中使用
PERSON_FIRST_NAME,大写下划线形式,建议在系统环境变量中使用
3.9属性验证
可以使用JSR-303注解进行验证,例如:
@Component
@ConfigurationProperties(prefix=&connection&)
public class ConnectionSettings {
private InetAddress remoteA
// ... getters and setters
4、自定义配置
& &spring boot使用application.properties默认了很多配置。但需要自己添加一些配置的时候,我们应该怎么做呢。
若继续在application.properties中添加
wisely2.name=wyf2
wisely2.gender=male2
定义配置类:
@ConfigurationProperties(prefix = &wisely2&)
public class Wisely2Settings {
public String getName() {
public void setName(String name) {
this.name =
public String getGender() {
public void setGender(String gender) {
this.gender =
若新用新的配置文件
如我新建一个wisely.properties
wisely.name=wangyunfei
wisely.gender=male
&需定义如下配置类
@ConfigurationProperties(prefix = &wisely&,locations = &classpath:config/wisely.properties&)
public class WiselySettings {
public String getName() {
public void setName(String name) {
this.name =
public String getGender() {
public void setGender(String gender) {
this.gender =
最后注意在spring Boot入口类加上@EnableConfigurationProperties
@SpringBootApplication &
@EnableConfigurationProperties({WiselySettings.class,Wisely2Settings.class}) &
public class DemoApplication { &
& & public static void main(String[] args) { &
& & & & SpringApplication.run(DemoApplication.class, args); &
使用定义的properties
在别的bean中可直接注入
@Controller
public class TestController {
@Autowired
WiselySettings wiselyS
@Autowired
Wisely2Settings wisely2S
@RequestMapping(&/test&)
public @ResponseBody String test(){
System.out.println(wiselySettings.getGender()+&---&+wiselySettings.getName());
System.out.println(wisely2Settings.getGender()+&===&+wisely2Settings.getGender());
return &ok&;
在@Bean方法上使用@ConfigurationProperties
@ConfigurationProperties(prefix = &foo&)
public FooComponent fooComponent() {
}Spring Boot 会将foo开头的属性按照名字匹配注入到FooComponent对象中。
涉及四个文件:
1:properties文件,这里是config.properties,放置在properties文件常放置的地方,即src/main/resources目录下
2:一个存放properties配置文件属性的Bean,这里是WiselySettings.
4:在spring Boot入口类加上@EnableConfigurationProperties
3:读取配置的Controller或者bean
5、YAML配置
相对于属性文件来说,YAML 是一个更好的配置文件格式。YAML 在 Ruby on Rails 中得到了很好的应用。SpringApplication 类也提供了对 YAML 配置文件的支持,只需要添加对 SnakeYAML 的依赖即可。application.yml 文件的示例。
profiles: development
url: jdbc:hsqldb:file:testdb
username: sa
profiles: test
url: jdbc:mysql://localhost/test
username: test
password: test
AML 文件同时给出了 development 和 test 两个不同的 profile 的配置信息,这也是 YAML 文件相对于属性文件的优势之一。除了使用“@Value”注解绑定配置属性值之外,还可以使用更加灵活的方式。YAML 文件的 Java 类:
@Component
@ConfigurationProperties(prefix=&db&)
public class DBSettings {
& & &通过“@ConfigurationProperties(prefix=&db&)”注解,配置属性中以“db”为前缀的属性值会被自动绑定到 Java 类中同名的域上,如 url 域的值会对应属性“db.url”的值。只需要在应用的配置类中添加“@EnableConfigurationProperties”注解就可以启用该自动绑定功能。
6. @EnableAutoCongiguration配置
从Spring 3.0开始,为了替代繁琐的XML配置,引入了@Enable...注解对@Configuration类进行修饰以达到和XML配置相同的效果。想必不少开发者已经使用过类似注解:
@EnableTransactionManagement开启Spring事务管理,相当于XMl中的&tx:*&@EnableWebMvc使用Spring MVC框架的一些默认配置@EnableScheduling会初始化一个Scheduler用于执行定时任务和异步任务
Spring Boot提供的@EnableAutoCongiguration似乎功能更加强大,一旦加上,上述所有的配置似乎都被包含进来而无需开发者显式声明。它究竟是如何做到的呢,先看看它的定义:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import({ EnableAutoConfigurationImportSelector.class,
AutoConfigurationPackages.Registrar.class })
public @interface EnableAutoConfiguration {
Class&?&[] exclude() default {};
EnableAutoConfigurationImportSelector使用的是spring-core模块中的SpringFactoriesLoader#loadFactoryNames()方法,它的作用是在类路径上扫描META-INF/spring.factories文件中定义的类:
# Initializers
org.springframework.context.ApplicationContextInitializer=\
org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
org.springframework.boot.autoconfigure.MessageSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration,\
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
org.springframework.boot.autoconfigure.data.JpaRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.MongoRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.redis.RedisAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration,\
org.springframework.boot.autoconfigure.jms.JmsTemplateAutoConfiguration,\
org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration,\
org.springframework.boot.autoconfigure.mobile.DeviceResolverAutoConfiguration,\
org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration,\
org.springframework.boot.autoconfigure.mongo.MongoTemplateAutoConfiguration,\
org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration,\
org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration,\
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration,\
org.springframework.boot.autoconfigure.security.FallbackWebSecurityAutoConfiguration,\
org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration,\
org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration,\
org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration,\
org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration,\
org.springframework.boot.autoconfigure.web.MultipartAutoConfiguration,\
org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration,\
org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration,\
org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration
实际上这就是Spring Boot会自动配置的一些对象,例如前面提到的Web框架由EmbeddedServletContainerAutoConfiguration,DispatcherServletAutoConfiguration,&ServerPropertiesAutoConfiguration等配置完成,而DataSource的自动配置则是由DataSourceAutoConfiguration完成。现在我们以Mongo的配置MongoAutoConfiguration为例,来探索Spring
Boot是如何完成这些配置的:
@Configuration
@ConditionalOnClass(Mongo.class)
@EnableConfigurationProperties(MongoProperties.class)
public class MongoAutoConfiguration {
@Autowired
private MongoP
@PreDestroy
public void close() throws UnknownHostException {
if (this.mongo != null) {
this.mongo.close();
@ConditionalOnMissingBean
public Mongo mongo() throws UnknownHostException {
this.mongo = this.properties.createMongoClient();
return this.
& & & 首先这是一个Spring的配置@Configuration,它定义了我们访问Mongo需要的@Bean,如果这个@Configuration被Spring
Context扫描到,那么Context中自然也就有两个一个Mongo对象能够直接为开发者所用。
但是注意到其它几个Spring注解:
@ConditionOnClass表明该@Configuration仅仅在一定条件下才会被加载,这里的条件是Mongo.class位于类路径上@EnableConfigurationProperties将Spring Boot的配置文件(application.properties)中的spring.data.mongodb.*属性映射为MongoProperties并注入到MongoAutoConfiguration中。@ConditionalOnMissingBean说明Spring Boot仅仅在当前上下文中不存在Mongo对象时,才会实例化一个Bean。这个逻辑也体现了Spring
Boot的另外一个特性——自定义的Bean优先于框架的默认配置,我们如果显式的在业务代码中定义了一个Mongo对象,那么Spring Boot就不再创建。
接下来看一看MongoProperties:
@ConfigurationProperties(prefix = &spring.data.mongodb&)
public class MongoProperties {
private int port = DBPort.PORT;
private String uri = &mongodb://localhost/test&;
显然,它就是以spring.data.mongodb作为前缀的属性,然后通过名字直接映射为对象的属性,同时还包含了一些默认值。如果不配置,那么mongo.uri就是mongodb://localhost/test。
配置通用属性
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5049866次
积分:28872
积分:28872
排名:第148名
原创:216篇
评论:1357条
(1)(2)(3)(2)(4)(2)(1)(2)(1)(1)(2)(1)(1)(1)(1)(1)(2)(2)(1)(2)(3)(3)(2)(2)(2)(4)(3)(2)(15)(6)(8)(14)(29)(26)(27)(18)(7)(8)(6)(2)电脑开机后只出现一片英文就不动了.-学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
> 信息中心 >
电脑开机后只出现一片英文就不动了.
来源:互联网 发表时间: 18:37:14 责任编辑:李志喜字体:
为了帮助网友解决“电脑开机后只出现一片英文就不动了.”相关的问题,学网通过互联网对“电脑开机后只出现一片英文就不动了.”相关的解决方案进行了整理,用户详细问题包括:
:press F8 to Emable conf iguration F9 to select bootng device after postF1 to continue del to enter setup01&#47电脑开机后只出现一片英文就不动了;11&#47.最下面写着..
,具体解决方案如下:解决方案1:在通常情况下,要求按F1进入系统都是系统的BIOS设置有不影响系统启动的小问题所致,所以请检查BIOS里的硬件信息设置与实际不符之处。 一般常见故障是: 1、主板上的电池没电了。 解决方法:换主板电池。 2、你设置了软驱启动,但是你的软驱有问题。 解决方法: a、开机按DEL进入bios,开机启动顺序,关闭软驱启动。 b、关闭开机软驱检测功能: 启动电脑,然后按【Del】键进入BIOS设置主界面; 选择“Advanced BIOS Features”设置项,按回车键进入; 将“Boot Up Floppy Seek”设置为“Disabled”,这样即可关闭开机软件检测功能了。 你没有安装软盘驱动器,但是在CMOS中设置了,开启软驱的选项. 方法是:开机按Del键,进入BIOS设置,选择第一个&基本设置&,把floopy一项设置没&Disabel&无效就可以了. 2刚开始开机时按DEL进入BIOS,按回车键进入第一项,看看里面的“Drive A”项是不是“None”,不是的话按“Pgup”或“PgDn”进行修改,修改后按“ESC”退出,选“Save & Exit Setup”项按回车退出BIOS,重启,再不行的话就换了电池再按上面的步骤重新设置既可。 3开机需要按下F1键才能进入,主要是因为BIOS中设置与真实硬件数据不符引起的,可以分为以下几种情况: 1、实际上没有软驱或者软驱坏了,而BIOS里却设置有软驱,这样就导致了要按F1才能继续。 2、原来挂了两个硬盘,在BIOS中设置成了双硬盘,后来拿掉其中一个的时候却忘记将BIOS设置改回来,也会出现这个问题。 3、主板电池没有电了也会造成数据丢失从而出现这个故障。 4、重新启动系统,进入BIOS设置中,发现软驱设置为1.44M了,但实际上机箱内并无软驱,将此项设置为NONE后,故障排除。解决方案2:
内存条出问题了?
解决方案3:
可能是BIOS电池没电了
解决方案4:
检查完后,可能会需要两三分钟,可能是你在上次关机的时候做法不当,不用紧张这个是电脑在开机的时候在自动检查各个盘地状况,电脑会正常开机运行的,电脑为了保护进行的检查
相关文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 学网 版权所有
京ICP备号-1 京公网安备02号}

我要回帖

更多关于 kbootopt.exe 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信