一:bean的后置处理器BeanPostProcessor
- 简介
主要是在bean的初始化前后进行一些处理工作。
postProcessBeforeInitialization:在初始化之前工作
postProcessAfterInitialization: 在初始化之后工作 -
实例
⑴创建实现BeanPostProcessor接口的自定义的后置处理器
⑵创建实体类
⑶配置类
⑷测试类
⑸效果
二:属性 赋值之@Value注解
- @Value用法的集中获取值的方式
a:基本数值,例如@Value("张三")
b:可以写spring的EL语句,例如:@Value("#{'key'}")
c:可以使用@Value("${key}") - 实例1:使用上面的a和b的方式
a:创建实体类
b:配置类
c:测试类
d:效果
- 实例2:使用@PropertySource加载外部文件,并且使用第三种方式向bean实体中注入值
a:创建配置文件
b:创建实体类
c:配置类
d:测试类
效果:
三:自定义组件之@Aware注入Spring底层组件
- 需求:我们想要在自定义组件中使用Spring容器底层的一些组件,例如:ApplicationContext,BeanFactory等等。
- 实例
⑴实现ApplicationContextAware,BeanNameAware以及EmbeddedValueResolverAware接口,
获取ApplicationContext等对象
a:自定义组件
b:配置类
c:测试类
效果:
四:自动装配之@Profile环境搭建
- 简介
这个是spring为我们提供的可以根据当前环境,动态的激活和切换一系列组件的功能。 - 数据源切换简单实例
⑴导入pom依赖
⑵配置文件
⑶配置类信息
注意:在配置类中我们使用的组件如下:
a:使用@PropertySource组件加载properties文件
b:实现了EmbeddedValueResolverAware接口,通过setEmbeddedValueResolver
方法解析并获取properties文件中的值
c:通过@Value组件直接给变量上使用并注入值
d: 通过@Value组件直接给方法参数上使用并注入值
以上都是获取properties文件中数据的方式。
⑷测试类
效果:
- 使用@Profile注解指定组件在哪个环境下才能被注册到容器中去。
⑴我们为数据源添加@Profile注解
⑵运行测试类效果:(发现一个DataSource类型的bean实例都没有了)
原因:加了@Profile这个环境标识的bean,只有在这个环境被激活的时候才能被注册到容器中。
当然默认是default环境,比如我们将test环境修改为default(后面自动修改回来test)
运行测试类效果:
- 那么我们可以通过下面的方式激活指定的环境
⑴:通过eclipse运行的命令行方式,命令:-Dspring.profiles.active=环境名称
这种方式是可以在项目部署的时候在虚拟机环境参数位置设置这个命令。
比如激活test环境,
效果:
⑵使用代码的方式指定要激活的环境
效果:
⑶当然@Profile这个注解是可以写在类上的,如果写在类上,那么只有满足@Profile注解
里面的条件,整个类里面的方法才会生效。