日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

springbean的生命周期_spring bean生命周期(涵盖spring常用接口的载入)

發(fā)布時間:2025/3/12 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springbean的生命周期_spring bean生命周期(涵盖spring常用接口的载入) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

spring bean生命周期流程圖:

?

???

其中包含了很多常用的接口,可以參考spring 常用接口;

下面寫個例子證明下:

1.實現(xiàn)InitializingBean以及各個Aware接口

public class UserB implements InitializingBean , BeanFactoryAware , BeanNameAware, BeanClassLoaderAware , ApplicationContextAware, EnvironmentAware, ResourceLoaderAware, MessageSourceAware { private String name; private int age; private UserA usera; @Autowired public void setUsera(UserA usera) { this.usera = usera; System.out.println("====UserB屬性注入usera"+usera); } public UserB() { System.out.println("====構(gòu)造userB"); } public String getName() { return "程序猿"; } public int getAge() { return 19; } public void function(){ System.out.println("====userB"+usera.getName()); } @Override public String toString() { return "UserB{" + "name='" + getName() + ''' + ", age=" + getAge() + ", usera=" + usera + '}'; } @Override public void afterPropertiesSet() throws Exception { System.out.println("UserB===InitializingBean-afterPropertiesSet"); } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { System.out.println("=====UserB:setBeanFactory"); } @Override public void setBeanClassLoader(ClassLoader classLoader) { System.out.println("=====UserB:setBeanClassLoader"); } @Override public void setBeanName(String name) { System.out.println("=====UserB:setBeanName"); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { System.out.println("=====UserB:setApplicationContext"); } @Override public void setEnvironment(Environment environment) { System.out.println("=====UserB:setEnvironment"); } @Override public void setMessageSource(MessageSource messageSource) { System.out.println("=====UserB:setMessageSource"); } @Override public void setResourceLoader(ResourceLoader resourceLoader) { System.out.println("=====UserB:setResourceLoader"); }}

2.實現(xiàn)BeanPostProcessor, BeanFactoryPostProcessor , InstantiationAwareBeanPostProcessor

@Componentpublic class UserPostProcessor implements BeanPostProcessor, BeanFactoryPostProcessor , BeanFactoryAware , InstantiationAwareBeanPostProcessor { BeanFactory beanFactory; @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { if(beanName.contains("UserB")) { Object bean1 = beanFactory.getBean(UserB.class.getName()); System.out.println("====BeanPostProcessor-postProcessBeforeInitialization:"+bean1); } return null; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if(beanName.contains("UserB")) { Object bean1 = beanFactory.getBean(UserB.class.getName()); System.out.println("====BeanPostProcessor-postProcessAfterInitialization:"+bean1); } return null; } @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { BeanDefinition beanDefinition = beanFactory.getBeanDefinition(UserB.class.getName()); System.out.println("=====BeanFactoryPostProcessor-postProcessBeanFactory:"+beanDefinition); } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { this.beanFactory = beanFactory; } @Override public Object postProcessBeforeInstantiation(Class> beanClass, String beanName) throws BeansException { if(beanName.contains("UserB")) { System.out.println("=====InstantiationAwareBeanPostProcessor-postProcessBeforeInstantiation:" + beanName); } return null; } @Override public boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException { if(beanName.contains("UserB")) { Object bean1 = beanFactory.getBean(UserB.class.getName()); System.out.println("=====InstantiationAwareBeanPostProcessor-postProcessAfterInstantiation" + bean1); } return true; } @Override public PropertyValues postProcessProperties(PropertyValues pvs, Object bean, String beanName) throws BeansException { if(beanName.contains("UserB")) { Object bean1 = beanFactory.getBean(UserB.class.getName()); System.out.println("=====InstantiationAwareBeanPostProcessor-postProcessProperties:" + bean1); } return null; }}

3.啟動類;

@SpringBootApplication@Import({UserB.class,UserA.class})public class DemoApplication {public static void main(String[] args) {ConfigurableApplicationContext run = SpringApplication.run(DemoApplication.class, args);}}

4.運行結(jié)果:

?

總結(jié)

以上是生活随笔為你收集整理的springbean的生命周期_spring bean生命周期(涵盖spring常用接口的载入)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。