IOC容器可以管理Bean的生命周期方法:
1.创建Bean实例
2.为Bean中的属性设置值和对其他Bean的引用
postProcessAfterInitialization
3.调用Bean的初始化方法(Bean中声明init-method)
postProcessBeforeInitialization
4.Bean的相关操作
5.容器关闭执行Bean的销毁方法(Bean中声明destroy-method)
注意:如果设置的后置处理器则会调用后置处理器的postProcessAfterInitialization和postProcessBeforeInitialization方法,此方法在bean的init方法前后执行
public class BeanPostProcessorDemo implements BeanPostProcessor {
@Override
public Object postProcessAfterInitialization(Object arg0, String arg1)
throws BeansException {
System.out.println("postProcessAfterInitialization"+arg1);
return arg0;
}
@Override
public Object postProcessBeforeInitialization(Object arg0, String arg1)
throws BeansException {
System.out.println("postProcessBeforeInitialization"+arg1);
return arg0;
}
}
常用注解
@Component:基本注解
@Service:服务层
@Controller:控制层
@Repository:持久层
@Scope(scopeName="prototype") :指定对象的作用范围
@Value("赋值的内容"):值类型注入
@Autowired:自动装配,适用于引用类型注入
@Qualifer(“装配的对象名”):与@Autowired合用,标志自动装配的对象名称
@Resource("装配对象的名称"):手动配置装配对象的名称,与@Autowired与@Qualifer合用效果一致
@PostConstruct:在对象被创建后调用,等同于init-method
@PreDestroy:在对象销毁之前调用,等同于destory-method
省略创建容器的注释写法
@RunWith(SpringJUnit4ClassRunner.class) :创建容器
@ContextConfiguration("classpath:applicationContext.xml") :指定配置文件位置
配置文件中配置如下:
<!-- 配置ioc自动扫描的包:base-package
配置自动匹配的类型:resource-pattern
-->
<context:component-scan base-package="com.milan.bean.annotation"
resource-pattern="*.class" use-default-filters="false">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/><!-- 指定不包含某些组件 -->
<context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/><!-- 指定包含某些组件,该子节点需要设置use-default-filters="false" -->
</context:component-scan>