目录
一、自动配置
1.1 bean的加载方式
1.1.1 加载方式(一)
- XML方式声明bean
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--xml方式声明自己开发的bean--> <bean id="cat" class="com.learn.bean.Cat"/> <bean class="com.learn.bean.Dog"/> <!--xml方式声明第三方开发的bean--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"/> <bean class="com.alibaba.druid.pool.DruidDataSource"/> <bean class="com.alibaba.druid.pool.DruidDataSource"/> </beans>
1.1.2 加载方式(二)
- XML + 注解方式声明bean
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--指定加载bean的位置,component--> <context:component-scan base-package="com.learn.bean,com.learn.config"/> </beans>
1.1.3 加载方式(三)
- 注解方式声明配置类
1.1.4 Bean的加载方式——扩展
- (一)
- (二)
- (三)
1.1.5 加载方式(四)
1.1.6 加载方式(五)
- 使用上下文对象在容器初始化完毕后注入bean
1.1.7 加载方式(六)
- 导入实现了ImportSerlector接口的类,实现对导入源的编程式处理
1.1.8 加载方式(七)
- 导入实现了ImportBeanDefinitionRegistrar接口的类,通过BeanDefinition的注册器注册实名bean,实现对容器中bean的裁定,例如对现有bean的覆盖,进而达成不修改源代码的情况下更换实现的效果
1.1.9 加载方式(八)
- 导入实现了BeanDefinitionRegistryPostProcessor接口的类,通过BeanDefinition的注册器注册实名bean, 实现对容器中bean的最终裁定
1.2 bean的加载控制
- 使用 @Conditional 注解的派生注解设置各种组合条件控制bean的加载
1.3 bean依赖的属性配置
- 将业务功能bean运行需要的资源抽取成独立的属性类(******Properties),设置读取配置文件信息
- 配置文件中使用固定格式为属性类注入数据
- 定义业务功能bean,通常使用 @Import 导入,解耦强制加载bean
- 使用 @EnableConfigurationProperties 注解设定使用属性类时加载bean
1.4 自动配置原理
1.4.1 变更自动配置
- 变更自动配置:取出tomcat自动配置(条件激活),添加jetty自动配置(条件激活)