关于Spring Bean的生命周期监听如下:
public class User implements BeanFactoryAware,BeanNameAware,InitializingBean,DisposableBean { private BeanFactory factory; private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } //BeanFactoryAware 的实现 public void setBeanFactory(BeanFactory beanFactory) throws BeansException { System.out.println(">>>>>>>>>>>setBeanFactory"); this.factory = beanFactory; } //BeanFactoryAware 的实现 public void setBeanName(String s) { System.out.println(">>>>>>>>>>>setBeanName : " + s); } //DisposableBean 的实现 public void destroy() throws Exception { System.out.println(">>>>>>>>>>>destroy"); } //InitializingBean 的实现 public void afterPropertiesSet() throws Exception { System.out.println(">>>>>>>>>>>afterPropertiesSet"); } }
ApplicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="user" class="com.maxfunner.entity.User" > <property name="password" value="abc" /> <property name="username" value="tony" /> </bean> </beans>
运行结果:
public static void main(String[] args){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); User user = context.getBean(User.class); System.out.println("user name is " + user.getUsername() + " , password is " + user.getPassword()); }
>>>>>>>>>>>setBeanName : user
>>>>>>>>>>>setBeanFactory
>>>>>>>>>>>afterPropertiesSet
user name is tony , password is abc