1.配置优先级
配置文件格式:properties,yml,yaml。(项目开发时推荐使用yml)
其他配置方式:Java系统属性配置,命令行参数配置。
配置优先级:命令行参数配置>ava系统属性配置>properties>yml>yaml
2.Bean管理
(1) 为什么要用@Bean?
因为管理的对象要是第三方的话,是无法直接用@Component注解及其衍生的注解来声明bean对象的,就需要用@Bean注解。
用法:通过@Configuration声明一个配置类,里面用@Bean注解声明方法,返回值就是需要使用的的第三方需要管理对象,方法里面返回一个new出来的第三方对象,其他的都不用写。一个配置类里面可以对多个bean进行管理。
@Configuration
public class CommonConfig {
@Bean
public BASE64Encoder base64Encoder(){
return new BASE64Encoder();
}
@Bean
public BASE64Decoder base64Decoder(){
return new BASE64Decoder();
}
}
(2)@Component和@Bean的区别?
都是用来管理bean对象的,加入IOC容器进行管理。但是,@Component是针对本项目的自己定义的bean对象使用。@Bean是针对项目中引入的第三方的。
3.获取bean
方法一:根据类型获取
<T> T getBean(Class<T> requiredType)
方法二:根据指定bean名称获取
Object getBean(String name)
方法三:根据指定bean名称和bean类型获取
● <T> T getBean(String name, Class<T> requiredType)
4.bean的作用范围
singleton是默认的,在容器启动时就会被创建,而且同id的只会创建一个,prototype只在使用bean的时候才会创建一个新的实例,每使用一次就会创建一次新的实例。
用法:@Scope("prototype")
5.自动配置原理
起步依赖:起步依赖本质上是一个Maven项目对象模型,定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。
自动配置:当spring容器启动后,一些配置类就自动装配到IOC容器中,不需要我们手动去声明,简化了开发,省去了繁琐的配置等操作。
@Conditional,按照一定条件进行判断,需要声明的bean,在满足给定的条件后才会注册到Spring IOC容器中。
@Import,导入一些配置类和bean到IOC容器中。
当SpringBoot 程序启动时,引导类上 @SpringBootApplication 注解生效,该注解由三个注解组成 @SpringBootConfiguration:引导类也是一个配置类 :@ComponentScan:包扫描
@EnableAutoConfiguration:自动配置。底层为:@Import(AutoConfigurationImportSelector.class),通过@Import导入配置类。