配置优先级:
命令行参数>java系统属性>properties>yml>yaml(主流使用yml配置文件)
bean的管理:
获取bean:
默认情况下,启动Spring项目时,会创建好bean对象,并放到IOC容器中(默认情况,单例非延迟加载的bean),调用IOC容器对象的重载方法主动获取bean对象(需先注入IOC容器对象,ApplicationContext)
bean的作用域:
默认singleton,单例,容器内同名称的bean只有一个实例,容器启动时就已经初始化,@Lazy注解延迟初始化,延迟到第一次使用时,prototype,非单例,每次使用bean时创建新的实例,实际开发时,绝大部分bean是单例的,即不需要配置scope
第三方bean,@Bean
如果要管理的bean对象来自第三方(非自定义),无法使用@Component及其衍生注解声明bean,则需使用@Bean注解,
通常通过@Configuration注解声明配置类对第三方bean对象进行集中分类配置,而非定义在启动类中
通过@Bean注解的name/value属性指定bean名称,未指定,默认为方法名
如果第三方bean需要依赖其他bean对象,直接在bean定义方法中设置形参即可,容器会根据类型自动装配
SpringBoot原理
基于Spring框架开发:繁琐(依赖,配置)===>SpringBoot框架(Spring4.0之后),两大功能:起步依赖,自动配置
起步依赖原理:maven的依赖传递
自动配置:启动spring容器后,一些配置类、bean对象自动存入IOC容器,无需手动声明,简化开发
实现方式1:@ComponentScan组件扫描
实现方式2:@Import,导入普通类,配置类,ImportSelector接口实现类,@EnableXXXX注解,封装@Import注解