@PostConstruct和@PreDestroy

@PostConstruct和@PreDestroy

在用微信插件的时候,发现路由不知道在哪里加载进去,然后就可以直接使用。

@Override
public void refreshRouter() {
    final WxMpMessageRouter newRouter = new WxMpMessageRouter(
        this.wxMpService);
    // 记录所有事件的日志
    newRouter.rule().handler(this.logHandler).next();
    /*// 关注事件
    newRouter.rule().async(false).msgType(WxConsts.XML_MSG_EVENT)
        .event(WxConsts.EVT_SUBSCRIBE).handler(this.subscribeHandler)
            .end();
    //取消关注事件
    newRouter.rule().async(false).msgType(WxConsts.XML_MSG_EVENT)
    	.event(WxConsts.EVT_UNSUBSCRIBE).handler(this.unsubscribeHandler)
        .end();
    //用户点击菜单推送事件
    newRouter.rule().async(false).msgType(WxConsts.XML_MSG_EVENT)
	.event(WxConsts.BUTTON_CLICK).handler(this.clickHandler)
    .end();*/
    //用户输入文本消息
    newRouter.rule().async(false).msgType(WxConsts.XML_MSG_TEXT)
    	.handler(this.serviceHandler)
        .end();
    //模板推送后微信服务器返回是否送达成功信息
    newRouter.rule().async(false).msgType(WxConsts.XML_MSG_EVENT)
    .event(WxConsts.EVT_TEMPLATESENDJOBFINISH).handler(this.templateSendHandler)
    .end();
    // 默认,转发消息给客服人员
    newRouter.rule().async(false).handler(this.msgHandler).end();
    this.router = newRouter;
}

发现在一个init方法上执行了一次,但是没有调用init方法,该方法上有@PostConstruct

@PostConstruct
public void init() {
    this.refreshRouter();
}

作用

被@PostConstruct修饰的方法会在服务器加载Servle的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。PreDestroy()方法在destroy()方法执行执行之后执行

//写法一
@PostConstruct
Public void test() {}

//写法二                                                    
public @PostConstruct void test(){}

执行顺序(spring容器->springmvc容器)

涉及到web.xml执行顺序

  • Constructor -> @Autowired -> @PostConstruct

  • 服务器加载Servlet->Servlet构造函数->PostConstruct->Init->Service->destory->PreDestory->服务器卸载Servlet完毕

使用场景

在servlet初始化加载之前想处理一些东西,像加载缓存,数据字典,需要提前加载的方法等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值