时间:2021-05-20
生命周期
initMethod和destroyMethod
Bean定义
public class Car { public Car() { System.out.println("car constructor"); } public void init(){ System.out.println("car init"); } public void destroy(){ System.out.println("car destroy"); }}配置类
多实例容器不会管理这个bean
@Configurationpublic class MyCOnfigOfLifeCycle { @Bean(initMethod = "init",destroyMethod = "destroy") public Car car(){ return new Car(); }}获取容器
@Test public void test01(){ printBeans(applicationContext); // 关闭容器 applicationContext.close(); } private void printBeans(AnnotationConfigApplicationContext applicationContext){ String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { System.out.println(beanDefinitionName); } }InitializingBean和DisposableBean
Bean定义
public class Cat implements InitializingBean, DisposableBean { @Override public void destroy() throws Exception { System.out.println("cat destroy"); } @Override public void afterPropertiesSet() throws Exception { System.out.println("cat initialize"); }}实现了InitializingBean和Disposable后,也可以实现初始化和销毁的方法
PostConstruct和PreDestroy
Bean定义
public class Dog { public Dog(){ System.out.println("dog constructor"); } @PostConstruct public void init(){ System.out.println("dog init"); } @PreDestroy public void destroy(){ System.out.println("dog destroy"); }}BeanPostProcessor
bean
定义
public class MyBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("before init" + beanName); return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println("after init" + beanName); return bean; }}加入到bean中,可以发现每个bean初始化前后都会执行功能
postProcessBeforeInitialization方法的返回值会被Spring容器作为处理后的Bean注册到容器中。如果你在postProcessBeforeInitialization方法中重新构造了一个Bean进行返回,而不是返回参数中的bean;那么你返回的Bean将会被注册到Spring容器中。而原来在Spring中配置的Bean(被Spring实例化的Bean)将会被覆盖。
一旦这两个方法返回null,就不会执行后面的postProcessBefore/AfterInitialization,(在applyBeanPostProcessorsBeforeInitialization中)
for(Iterator var4 = this.getBeanPostProcessors().iterator(); var4.hasNext(); result = current) { BeanPostProcessor processor = (BeanPostProcessor)var4.next(); current = processor.postProcessBeforeInitialization(result, beanName); if (current == null) { return result; } }步骤:
populateBean给Bean赋值
initializeBean{ applyBeanPostProcessorsBeforeInitialization,
invokeInitMethods, // 自定义初始化
applyBeanPostProcessorsAfterInitialization}
底层使用
bean赋值,bean注入,@autowire,生命周期注解功能,@Async
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
jsp生命周期理解JSP底层功能的关键就是去理解它们所遵守的生命周期。JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命
本文实例讲述了React生命周期原理与用法。分享给大家供大家参考,具体如下:React生命周期生命周期概览生命周期的状态组件的生命周期可分成三个状态:Mount
1.SpringIOC容器可以管理bean的生命周期,Spring允许在bean生命周期内特定的时间点执行指定的任务。2.SpringIOC容器对bean的生命
这篇文章主要介绍了SPRINGFRAMEWORKBEAN作用域和生命周期原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
本文介绍了Angular中的生命周期钩子的理解,分享给大家,希望对大家有所帮助什么是生命周期钩子简单点来说生命周期钩子就是Angular中一个组件从被创建当销毁