1.
public DemoSpring(){
//实例化一个空对象
}
2.
.public void setBeanProperties(String s) {
//将值和引用注入到Bean对应的属性中
}
3.实现BeanNameAware
@Override
public void setBeanName(String s) {
//获得Bean的ID
}
4.实现BeanFactoryAware
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
//获取spring容器,beanFactory需要手动传入
}
或者
实现ApplicationContextAware
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
//获取spring容器,applicationContext会自动作为参数传入
applicationContext = this.applicationContext;
}
5.实现BeanPostProcessor
@Override
public Object postProcessBeforeInitialization(Object o, String s) throws BeansException {
//前初始化
return null;
}
6.实现InitializingBean
@Override
public void afterPropertiesSet() throws Exception {
//Bean的属性设置成功后(被spring容器),初始化
//不鼓励使用该接口,因为这样会将代码与Spring耦合在一起
}
7.实现BeanPostProcessor
@Override
public Object postProcessAfterInitialization(Object o, String s) throws BeansException {
//后初始化
return null;
}
8.
此时Bean就一直留在上下文中被应用使用了,直到应用上下文被销毁
9.实现DisposableBean
@Override
public void destroy() throws Exception {
//Bean销毁前执行的方法
//允许在容器销毁该bean的时候获得一次回调
//不鼓励使用该接口,因为这样会将代码与Spring耦合在一起
}
注:
还可以用xml配置的destroy-method来释放资源,这样不会和spring耦合