8.1 两种后处理
8.1.1 Bean 后处理
Bean后处理会在Bean实例创建后,对Bean进行进一步的增强处理。
Bean后处理必须实现BeanPostProcesser接口,BeanPostProcesser接口的两个实现方法:
(1):Object postProcesserBeforeInitializationI(Object bean,String name) throws BeansException,
第一个参数是要处理的bean,第二个参数是bean的Id
(2):Object postProcesserAfterInitializationI(Object bean,String name) throws BeansException,
第一个参数是要处理的bean,第二个参数是bean的Id
8.1.2 Bean后处理的用处
下面是spring常用的两个后处理器:
(1):BeanNameAutoCreator:根据Bean的name属性,创建Bean实例的代理。
(2):DefaultAdvisorAutoProxyCreator:根据提供的Advisor,对容器中的所有的Bean实例创建代理。
8.1.3 容器后处理
容器后处理必须实现BeanFactoryPostProcessor接口,该接口有一个方法:
(1):postProcessorBeanFactory()
spring提供如下几个常用的容器后处理器;
(1):PropertyPlaceholderconfigurer,属性占位符配置器,---->添加属性文件(.porperties文件)
(2):PropertyOverrideConfigurer,重写占位符配置器,
(3):CustomAutowireConfigurer,自定义自动装配的配置器,
(4):customScopeConfigurer,自定义作用域的配置器,
8.1.4 属性占位符配置器
8.1.5 重写占位符配置器
8.2 Spring的“零配置“支持
8.2.1 搜索Bean类
Spring提供了几个annotation来标注Spring Bean,
(1):@component:标注一个普通的Spring Bean,
(2):@Controller:标注一个控制器组件类,
(2):@Service:标注一个业务逻辑组件类,
(3):@Repository:标注一个DAO组件类,
8.2.2 指定Bean的作用域
@Scope("Prototype") ,如果不加,默认是singleton。
8.2.3 使用@Resource配置依赖
@Resource 默认有一个那么属性,Spring 解释这个属性为需要被注入的Bean实例的id。
8.2.4 使用@Postconstruct和@PreDestroy 定制生命周期行为
这两个注解可以修饰任意一个方法。该方法就被赋予了特殊的功能。
Bean实例化之后执行@PostConstruct修饰的方法。
Bean在销毁之前执行@PreDestroy修饰的方法。
8.2.5 Spring 3.0 新增的注解
@DependsOn和@Lazy
@DependsOn可以修饰类或者方法,@DependsOn(”bean1“,”bean2“),强制初始化bean1,bean2
@Lazy(true):Spring初始化时,不会预初始化@Lazy(true)修饰的类
8.2.6 Spring 4.0 新增的注解
Sping 提供@Autowired注解指定自动装配,使用该注解修饰的变量,默认是按照变量的类型进行装配,而@Resource是按照Bean的id值来进行装配的,