在实际开发中我们可能会需要在Bean使用前和销毁前进行某些操作,Spring对Bean的生命周期的操作提供了支持,提供如下两种方式:
(1)Java配置方式:
在Java配置类中,使用@Bean注解显示声明Bean的时候,通过@Bean注解的initMethod和destroyMethod为Bean指定这两个阶段执行的函数。
(2)注解方式:
利用JSR-250提供的@PostConstrust和@PreDestroy注解。@PostConstruct注解标识函数在构造函数执行完之后执行。
示例:
(1)java配置方式
①Bean代码
package learnspring.learnspring.initanddestroy;
/**
 * @author 肖政宇
 * @date 2019-09-26 10:47
 * 说明:示例
 */
public class DemoBean {
    public DemoBean() {
        System.out.println("创建Bean");
    }
    public void useBean() {
        System.out.println("Bean被使用");
    }
    public void initBean() {
        System.out.println("使用Bean之前");
    }
    public void destroyDean() {
        System.out.println("销毁Bean之前");
    }
}
 
②java配置类代码
package learnspring.learnspring.initanddestroy;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @author 肖政宇
 * @date 2019-09-26 10:49
 * 说明:java配置类
 */
@Configuration
public class DemoConfiguration {
    @Bean(initMethod = "initBean", destroyMethod = "destroyDean")
    DemoBean createBean() {
        return new DemoBean();
    }
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context =
                new AnnotationConfigApplicationContext(DemoConfiguration.class);
        DemoBean demoBean = context.getBean(DemoBean.class);
        demoBean.useBean();
        context.close();
    }
}
③运行结果

(2)注解方式:
①Bean
package learnspring.learnspring.initanddestroy;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
/**
 * @author 肖政宇
 * @date 2019-09-26 10:47
 * 说明:示例
 */
public class DemoBean {
    public DemoBean() {
        System.out.println("创建Bean");
    }
    public void useBean() {
        System.out.println("Bean被使用");
    }
    @PostConstruct
    public void initBean() {
        System.out.println("使用Bean之前");
    }
    @PreDestroy
    public void destroyDean() {
        System.out.println("销毁Bean之前");
    }
}
Java配置类以及运行结果和方法一一样。
    地势坤,君子以厚德载物。
                    
                
                
            
        
浙公网安备 33010602011771号