当前位置:网站首页>@PostConstruct注解详解
@PostConstruct注解详解
2022-08-02 07:29:00 【sebeefe】
初始化方式一:@PostConstruct注解
假设类UserController有个成员变量UserService被**@Autowired**修饰,那么UserService的注入是在UserController的构造方法之后执行的。
如果想在UserController对象生成时候完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入的对象,那么就无法在构造函数中实现(ps:spring启动时初始化异常),例如:
public class UserController {
@Autowired
private UserService userService;
public UserController() {
// 调用userService的自定义初始化方法,此时userService为null,报错
userService.userServiceInit();
}
}
因此,可以使用@PostConstruct注解来完成初始化,@PostConstruct注解的方法将会在UserService注入完成后被自动调用。
public class UserController {
@Autowired
private UserService userService;
public UserController() {
}
// 初始化方法
@PostConstruct
public void init(){
userService.userServiceInit();
}
}
**总结:**类初始化调用顺序:
(1)构造方法Constructor
(2)@Autowired
(3)@PostConstruct
初始化方式二:实现InitializingBean接口
除了采用注解完成初始化,也可以通过实现InitializingBean完成类的初始化
public class UserController implements InitializingBean {
@Autowired
private UserService userService;
public UserController() {
}
// 初始化方法
@Override
public void afterPropertiesSet() throws Exception {
userService.userServiceInit();
}
}
比较常见的如SqlSessionFactoryBean,它就是通过实现InitializingBean完成初始化的。
@Override
public void afterPropertiesSet() throws Exception {
// buildSqlSessionFactory()是完成初始化的核心方法,必须在构造方法调用后执行
this.sqlSessionFactory = buildSqlSessionFactory();
}
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- Neural network
- ROS file system and related commands
- HCIP 第八天
- flutter在导航栏处实现对两个列表的点击事件
- spark architecture
- 学习笔记(8)DOM
- spark read folder data
- PanGu-Coder: A function-level code generation model
- Ask a question, my Flinkcdc has run through, I can monitor the binlog of msql, and I can also send kafk
- 理论问题与工程问题的差异在哪里?
猜你喜欢
WebForm DropDownList bind year and month respectively
Comprehensive experiment of MPLS and BGP
MySQL - based
Splunk Filed extraction field interception
Mysql error 2003 solution Can 't connect to Mysql server on' localhost '(10061).
Hack The Box - File Transfers Module详细讲解中文教程
Compact格式下MySQL的数据如何存储到磁盘
MySQL-Execution Process + Cache + Storage Engine
HCIP 第十二天
用户身份标识与账号体系实践
随机推荐
gdalinfo: error while loading shared libraries: libgdal.so.30: cannot open shared object file: No su
MySQL优化之慢日志查询
(2022 Niu Ke Duo School 5) D-Birds in the tree (tree DP)
牛客2022 暑期多校4 D Jobs (Easy Version)(递推优化策略)
停止精神内耗 每日分享
18、优化网站性能
PanGu-Coder: A function-level code generation model
MySQL-索引优化和查询优化
多表的查询
Hack The Box - File Transfers Module详细讲解中文教程
DeadLock的可视化分析
.NET静态代码织入——肉夹馍(Rougamo) 发布1.1.0
ROS文件系统以及相关命令
学习笔记(7)Funtion
WebForm DropDownList bind year and month respectively
MySQL-FlinkCDC-Hudi enters the lake in real time
ROS file system and related commands
Introduction to Totem Pole and Push-Pull Circuits
MySQL事务隔离级别详解
HCIP 第五天