一、代碼說明spring
import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; /** * Bean生命週期 */ public class BeanLifecycle implements BeanNameAware, ApplicationContextAware, InitializingBean, DisposableBean { /** * 1. 構造器 */ public BeanLifecycle() { System.out.println("1. 【Bean級別】構造器執行了"); } /** * 2. BeanNameAware接口方法實現 */ @Override public void setBeanName(String name) { System.out.println("2. 【Bean級別】setBeanName方法執行了"); } /** * 3. ApplicationContextAware接口方法實現 */ @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { System.out.println("3. 【Bean級別】setApplicationContext方法執行了"); } /** * 4. InitializingBean接口方法實現 */ @Override public void afterPropertiesSet() throws Exception { System.out.println("4. 【Bean級別】afterPropertiesSet方法執行了"); } /** * 5. init-method屬性指定的方法 * 指定某個方法在Bean實例化完成,依賴關係設置結束後執行 */ public void lifecycleInit() { System.out.println("5. 【Bean級別】init-method指定的方法執行了"); } /** * 6. Bean中的業務方法 */ public void sayHello() { System.out.println("6. 【Bean級別】sayHello方法執行了"); } /** * 7. DisposableBean接口方法實現 */ @Override public void destroy() throws Exception { System.out.println("7. 【Bean級別】destroy方法執行了"); } /** * 8. destroy-method屬性指定的方法 * 指定某個方法在Bean銷燬以前被執行 */ public void lifecycleInitDestroy() { System.out.println("8. 【Bean級別】destroy-method屬性指定的方法執行了"); } }
二、xml配置 spring-chapter2-beanlifecycle.xmlapp
<?xml version="1.0" encoding="UTF-8"?> <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"> <!--BeanLifecycle--> <bean id="beanLifecycle" class="com.test.lifecycle.beanlifcycle.BeanLifecycle" init-method="lifecycleInit" destroy-method="lifecycleInitDestroy"> </bean> </beans>
三、Bean生命週期測試ide
import com.test.lifecycle.beanlifcycle.BeanLifecycle; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; /** * @Description Bean生命週期測試 */ @RunWith(SpringRunner.class) @ContextConfiguration("classpath:spring-chapter2-beanlifecycle.xml") public class BeanLifecycleTest { @Autowired private BeanLifecycle beanLifecycle; @Test public void test() { beanLifecycle.sayHello(); } }
四、運行結果測試
1. 【Bean級別】構造器執行了 2. 【Bean級別】setBeanName方法執行了 3. 【Bean級別】setApplicationContext方法執行了 4. 【Bean級別】afterPropertiesSet方法執行了 5. 【Bean級別】init-method指定的方法執行了 6. 【Bean級別】sayHello方法執行了 7. 【Bean級別】destroy方法執行了 8. 【Bean級別】destroy-method屬性指定的方法執行了