スプリングの中のlifeCycle(ライフサイクル)
6590 ワード
スプリングのライフサイクル
1. コンテナ起動は、BenFactoyPostProcessorインターフェースを実現したクラスをすべて実用化します.彼はどのような一般的なBeanの実装前にロードされます.
2. 残りのBeanを実装し,これらのBeanに依存注入した.
3. BeanがBenNameAwareを実現するインターフェースがあるなら、これらのBeanを呼び出します.
4. BeanがBenFactoryAwareインターフェースを実現しているなら、これらのBeanを呼び出します.
5. BeanがApplication ContactextAwareインターフェースを実現しているなら、これらのBeanを呼び出します.
6. BeanPostProcessorのBeanを実現するように構成されているなら、そのpostProcess Before Initiazationを呼び出す方法があります.
7. ビーンがInitializingBeanインターフェースを実現しているなら、これらのBeanを呼び出します.
8. Beanがinit属性を持つ場合、その属性に設定された方法を呼び出します.
9. BeanPostProcessorのBeanを実現するように構成されているなら、そのpostProcess After Initializationを呼び出す方法があります.
10. Beanは正常に使用されます
11. DispposableBeanインターフェースのdestoryメソッドを呼び出します.
12. Bean定義のdestoryメソッドを呼び出します.
大まかに値を区別すれば四つの段階に分けられます.
1. BenFactoyPostProcessorの実例化
2. Beanを実例化して、いくつかのBenFactoyPostProcessorによって依存注入します.
3. BeanPostProcessorの呼び出し.Spring内蔵のBeanPostProcessorはBean実現のインターフェースを呼び出します.BeanNameAware、BenFactoryAware、Application ContactAwareなど、内蔵のBeaBenPostProcessorが呼び出しが完了したら、自分の配置したBenPostProcessorを呼び出すことができます.
4. ビーン焼却段階
1. コンテナ起動は、BenFactoyPostProcessorインターフェースを実現したクラスをすべて実用化します.彼はどのような一般的なBeanの実装前にロードされます.
2. 残りのBeanを実装し,これらのBeanに依存注入した.
3. BeanがBenNameAwareを実現するインターフェースがあるなら、これらのBeanを呼び出します.
4. BeanがBenFactoryAwareインターフェースを実現しているなら、これらのBeanを呼び出します.
5. BeanがApplication ContactextAwareインターフェースを実現しているなら、これらのBeanを呼び出します.
6. BeanPostProcessorのBeanを実現するように構成されているなら、そのpostProcess Before Initiazationを呼び出す方法があります.
7. ビーンがInitializingBeanインターフェースを実現しているなら、これらのBeanを呼び出します.
8. Beanがinit属性を持つ場合、その属性に設定された方法を呼び出します.
9. BeanPostProcessorのBeanを実現するように構成されているなら、そのpostProcess After Initializationを呼び出す方法があります.
10. Beanは正常に使用されます
11. DispposableBeanインターフェースのdestoryメソッドを呼び出します.
12. Bean定義のdestoryメソッドを呼び出します.
大まかに値を区別すれば四つの段階に分けられます.
1. BenFactoyPostProcessorの実例化
2. Beanを実例化して、いくつかのBenFactoyPostProcessorによって依存注入します.
3. BeanPostProcessorの呼び出し.Spring内蔵のBeanPostProcessorはBean実現のインターフェースを呼び出します.BeanNameAware、BenFactoryAware、Application ContactAwareなど、内蔵のBeaBenPostProcessorが呼び出しが完了したら、自分の配置したBenPostProcessorを呼び出すことができます.
4. ビーン焼却段階
package mislay;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
public class BeanFactoryPostProcessorTest implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(
ConfigurableListableBeanFactory beanFactory) throws BeansException {
System.out.println("--------> begin BeanFactoryPostProcessorTest");
String[] names = beanFactory.getBeanDefinitionNames();
for (String name : names) {
System.out.println("definition bean name:" + name);
}
System.out.println("
package mislay;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
public class BeanPostProcessorTest implements BeanPostProcessor {
@Override
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
System.out.println("call BeanPostProcessor interface postProcessAfterInitialization method; :" + beanName);
return bean;
}
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
System.out.println("call BeanPostProcessor interface postProcessBeforeInitialization method ::" + beanName);
if(bean instanceof BeanTest) {
System.out.println("bean instanceof BeanTest");
}
return bean;
}
}
package mislay;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class BeanTest implements InitializingBean, DisposableBean,BeanNameAware,BeanFactoryAware,ApplicationContextAware {
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("call InitializingBean interface");
}
@Override
public void destroy() throws Exception {
// TODO Auto-generated method stub
System.out.println("call DisposableBean interface");
}
public void _init() {
System.out.println("call bean init method");
}
public void _destory() {
System.out.println("call bean destory method");
}
public void setSomething(Object something) {
System.out.println("DI call setSomething method");
}
public BeanTest() {
System.out.println("BeanTest create");
}
@Override
public void setBeanName(String name) {
// TODO Auto-generated method stub
System.out.println("call BeanNameAware interface name is:" + name);
}
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
// TODO Auto-generated method stub
System.out.println("call BeanFactoryAware interface");
}
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
// TODO Auto-generated method stub
System.out.println("call ApplicationContextAware interface");
}
}
package mislay;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
((AbstractApplicationContext) context).registerShutdownHook();
}
}
package mislay;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
((AbstractApplicationContext) context).registerShutdownHook();
}
}
//
// BeanFactoryPostProcessor
--------> begin BeanFactoryPostProcessorTest
definition bean name:mislay.BeanFactoryPostProcessorTest
definition bean name:mislay.BeanPostProcessorTest
definition bean name:beanTest