一、Spring Boot概述
二、@Value与@ConfigurationProperties配置文件中获取值比较
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个一个指定 |
松散绑定(松散语法) | 支持(短横线改驼峰命名) | 不支持 |
SpEL(表达式) | 不支持 | 支持 |
JSR303数据校验(@Email格式) | 支持 | 不支持 |
三、@PropertySource 与@ImportResource
@PropertySource 加载指定的配置文件
//指定xxx.properties配置文件
@PropertySource(value={"classpath:xxx.properties"})
@ImportResource 导入Spring的配置文件,让配置文件里面的内容生效
Spring Boot 里面没有Spring的配置文件,即使是我们自己编写的配置文件也不能自动识别,想让Spring的配置文件生效,加载进来,用@ImportResource标注在一个需要生效的配置类上
//标注需要生效的Spring配置文件 xxx.xml文件
@@ImportResource(location="{classpath:xxx.xml}")
Spring Boot推荐使用全注解注入配置文件
@Configuration//指明当前类是一个配置类
public class MyAppConfig{
//将方法返回值添加到容器中,容器中这个组件默认的id就是方法名
@Bean
public HelloService helloService(){
return new HelloService;
}
}
测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class Spingboot01ApplicationTests {
@Autowired
ApplicationContext ac;
@Test
public void testHelloService() {
Boolean b = ac.containBean("helloService");
System.out.println(b);
}
}
四、配置文件的占位符
1、随机数
${random.uuid} ${random.int} ${random.long} ${random.int(10)}...
2、占位符获取之前配置的值,如果没有值,可以用:指定默认值
name=章鱼哥_${name2:Mack}
age=${random.int}
birth=2019/08/20
五、profile
激活profile
1、在配置文件中指定
//指定xxx-dev.properties为主配置文件(替换原来的application.properties)
spring.profiles.active=dev
2、cmd命令行(项目打包完成后)
java -jar 文件名.jar --spring.profiles.active=dev
3、直接测试时,配置传入命令行参数
spring.profiles.active=dev
4、虚拟机参数(-D规定语法)
六、配置文件加载位置
七、自动配置原理(重点)
1)Spring boot 启动的时候加载主配置类,开启自动配置功能@EnableAutoConfiguration
2)@EnableAutoConfiguration作用
- 底层利用选择器 注解@Import({AutoConfigurationImportSelector.class})给容器导入一些组件
- 可以在插件selectImports()方法的内容