spring注解@PostConstruct
该注解可以实现在运行工程时,自动运行该注解下的方法;
@PostConstruct是java5的时候引入的注解,指的是在项目启动的时候执行这个方法,也可以理解为在spring容器启动的时候执行,可作为一些数据的常规化加载,比如数据字典之类的。
被@PostConstruct修饰的方法会在服务器加载Servle的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行
也就是加载顺序
服务器加载Servlet -> servlet 构造函数的加载 -> postConstruct ->init(init是在service 中的初始化方法. 创建service 时发生的事件.) ->Service->destory->predestory->服务器卸载serlvet
那么问题:spring中Constructor、@Autowired、@PostConstruct的顺序
Constructor >> @Autowired >> @PostConstruct
依赖注入的字面意思就可以知道,要将对象p注入到对象a,那么首先就必须得生成对象p与对象a,才能执行注入。所以,如果一个类A中有个成员变量p被@Autowired注解,那么@Autowired注入是发生在A的构造方法执行完之后的。
@PostConstruct应用场景:
如果想在生成对象时候完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,那么就无法在构造函数中实现。为此,可以使用@PostConstruct注解一个方法来完成初始化,@PostConstruct注解的方法将会在依赖注入完成后被自动调用。
现在的工程是启动消息队列时用到了这个注解
@PostConstruct
public void start() {
try {
int connect = producer.connect();
if (connect == 0) {
log.info("producer start success! groupName:{},namesrvAddr:{}", rocketMqProperties.getProducer().getGroupName(), rocketMqProperties.getNamesrvAddr());
}
} catch (MQException e) {
e.printStackTrace();
}
}
@PreDestroy
public void stop() {
try {
if (producer != null) {
producer.close();
log.info("producer closed");
}
}catch (MQException a)
{
a.printStackTrace();
}
}
spring注解@PostConstruct的更多相关文章
- Spring注解@PostConstruct与@PreDestroy
关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二 ...
- spring注解@postConstruct与constructor与@Autowired的启动顺序
本文链接:https://blog.csdn.net/zpflwy1314/article/details/80797756 @Postcontruct’在依赖注入完成后自动调用,例如要将对象a注入到 ...
- spring注解之@PostConstruct在项目启动时执行指定方法
一.注解解释 Spring的@PostConstruct注解在方法上,表示此方法是在Spring实例化该Bean之后马上执行此方法,之后才会去实例化其他Bean,并且一个Bean中@PostConst ...
- Spring注解
AccountController .java Java代码 1. /** 2. * 2010-1-23 3. */ 4. packag ...
- spring注解总结
• @Controller 表示 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写,表示某类是一个控制器组件 • @Service 表示负责注册一个bea ...
- spring注解说明之Spring2.5 注解介绍(3.0通用)
spring注解说明之Spring2.5 注解介绍(3.0通用) 注册注解处理器 方式一:bean <bean class="org.springframework.beans.fac ...
- [转]Spring 注解总结
原文地址:http://blog.csdn.net/wangshfa/article/details/9712379 一 注解优点?注解解决了什么问题,为什么要使用注解? 二 注解的来龙去脉(历史) ...
- Spring 注解总结
声明:这是转载的.内容根据网上资料整理.相关链接:http://www.360doc.com/content/10/1118/16/2371584_70449913.shtmlhttp://www.i ...
- spring注解使用
一.各种注解方式 1.@Autowired注解(不推荐使用,建议使用@Resource) @Autowired可以对成员变量.方法和构造函数进行标注,来完成自动装配的工作.@Autowired的标注位 ...
- Spring注解用法
1. Controller层:@Controller @Controller @RequestMapping("/user")//请求localhost:8080/user/*** ...
随机推荐
- 【A GUIDE TO CRC ERROR DETECTION ALGORITHM】 (译文1)
A GUIDE TO CRC ERROR DETECTION ALGORITHM (译文) <A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHM& ...
- 瑞芯微|rk3568 uart快速上手
一.调试环境 平台:rk3568 kernel: 4.19.232 SDK: rk_android11.0_sdk Board: rk3568-evb1-ddr4-v10 二. rk3568 uart ...
- 线性dp:最长公共子串
最长公共子串 本文讲解的题与leetcode718.最长重复子数组,题意一模一样,阅读完本文以后可以去挑战这题. 力扣链接 题目叙述: 给定两个字符串,输出其最长公共子串的长度. 输入 ABACCB ...
- Unix、Linux、GNU 关系梳理
之前写了一篇 MSYS2.MinGW 和 Cygwin 关系梳理的博客,但是要讲清它们几个的关系最好还是先了解一下操作系统的发展历程.遂补充了这篇博客. UNIX:现代操作系统的始祖 Operatin ...
- 这10种分布式ID,太绝了!
前言 分布式ID,在我们日常的开发中,其实使用的挺多的. 有很多业务场景在用,比如: 分布式链路系统的trace_id 单表中的主键 Redis中分布式锁的key 分库分表后表的id 今天跟大家一起聊 ...
- QT QML实用效果之实现页面切换效果
简介 本文介绍了如何使用QT QML和JavaScript实现页面动态加载和切换的效果. 文章目录 效果 JavaScript代码:butianyun.js文件 QML代码:主页面 页面A QML代码 ...
- QT数据可视化框架编程实战之三维柱状图从入门到精通_补天云QT技术培训专家
QT数据可视化框架编程实战之三维柱状图从入门到精通_补天云QT技术培训专家 简介 本文将介绍QT数据可视化框架(QT DataVisualization 模块)编程实战之三维柱状图(Q3DBars)的 ...
- Flutter 2.8 正式发布
文/ Tim Sneath,Flutter & Dart 产品经理 Flutter 已经更新到 2.8 正式版,发布了多项新特性和改进以不断改善移动和 Web 端的开发体验,同时也正在将桌面端 ...
- 信创环境经典版SuerMap iManager启动崩溃
一.问题环境 操作系统:银河麒麟kylin V10 CPU:鲲鹏920 SuperMap iManager 10.2.1 硬件:16H64G机器 二.现象 磁盘和内存都有空闲,首次启动SuperMap ...
- 【赵渝强老师】NoSQL数据库之Cassandra基础
一.Cassandra简介 Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable.其主要功能比Dynamo (分布式的Key-Value存储系统)更丰富,但支持度却不如 ...