@PostConstruct和@PreDestroy注解

从Java EE 5规范开始,Servlet中增加了两个影响Servlet生命周期的注解(Annotion):@PostConstruct和@PreDestroy。这两个注解被用来修饰一个非静态的void()方法 。

1.@PostConstruct说明

Java中该注解的说明:@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。

类似于Serclet的inti()方法。

通常我们会是在Spring框架中使用到@PostConstruct注解 该注解的方法在整个Bean初始化中的执行顺序:

Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)

2.@PreDestroy说明

     被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。会在destroy()方法执行之后执行,在Servlet被彻底卸载之前。

Eureka中的使用示例:

    @PostConstruct
    @Override
    public void initialize() {
        logger.info("Initializing ...");
        peerEurekaNodes.start();
        try {
            registry.init(peerEurekaNodes);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        logger.info("Initialized");
    }

    @PreDestroy
    @Override
    public void shutdown() {
        logger.info("Shutting down ...");
        registry.shutdown();
        peerEurekaNodes.shutdown();
        logger.info("Shut down");
    }

工作流中的使用示例:

    //在 流程核心初始化类 生成前将数据源注入,实现。
    @Bean
    public EchainInitializer yuspEchainBean(DataSource dataSource) {
    	Const.echainstudiopath = echainstudiopath;
        return new EchainInitializer(dataSource);
    }

    //一个内部类利用构造先执行的特征将初始化好的流程核心初始化类传入。
    @Configuration
    public class EchainInit {
        private EchainInitializer yuspEchainBean;

        public EchainInit(EchainInitializer yuspEchainBean) {
            this.yuspEchainBean = yuspEchainBean;
        }

        //在通过构造获得已经初始化好的流程核心初始化类之后,调用类中的初始化方法去执行相关初始化操作。
        @PostConstruct
        public void initEchain() {
            yuspEchainBean.init();
        }

    }
    

写法有如下两种方式:

@PostConstruct

Public void someMethod() {}
                                                                                    
或者

public @PostConstruct void someMethod(){}

 

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值