package com.lei.study_09_15.config; import com.lei.study_09_15.bean.Cat; import com.lei.study_09_15.bean.Dog; import com.lei.study_09_15.bean.Person; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Scope; /** * * * @author LeiLei * @date 2019/9/15 */ @Configuration public class BeanConfigLifeCycle { @Bean(destroyMethod = "method3") public Dog dog() { return new Dog(); } }
package com.lei.study_09_15.bean; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; /** * 使用JSR250定义的两个注解来定义初始化和销毁 * * @author LeiLei * @date 2019/9/15 */ public class Dog { public Dog() { System.out.println("Dog.Dog"); } @PostConstruct public void method1() { System.out.println("Dog.method1"); } @PreDestroy public void method2() { System.out.println("Dog.method2"); } public void method3() { System.out.println("Dog.method3"); } }
执行结果:
Dog.Dog(构造器)
Dog.method1(init)
Dog.method2(preDestory)
Dog.method3(destory)
总结:下面的两个注解是JSR250规范中的。
1. @PostConstruct:构造器后置执行方法。
2.@PreDestroy:对象销毁前执行的方法,该方法执行完后才会执行真正的销毁方法。