欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

浅谈@PostConstruct不被调用的原因,

来源: javaer 分享于  点击 27859 次 点评:252

浅谈@PostConstruct不被调用的原因,


目录
  • @PostConstruct不被调用的原因
    • 如图
  • @PostConstruct详解
    • 定义
    • 用法
    • 作用
    • 执行顺序

@PostConstruct不被调用的原因

如果在配置文件中配置使用,延迟加载的话

如图

被@Service等注解的类,需要在注入使用的时候,才会被初始化.如果TableInit类只是被定义而没有在其他地方引用的话,@PostConstrut注释的方法是不会执行的.

@PostConstruct详解

定义

@PostContruct是Java自带的注解,在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法。

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

用法

@PostConstruct 
public void someMethod(){}

或者

public @PostConstruct void someMethod(){}

作用

@PostConstruct注解的方法在项目启动的时候执行这个方法,也可以理解为在spring容器启动的时候执行,可作为一些数据的常规化加载,比如数据字典之类的。

执行顺序

其实从依赖注入的字面意思就可以知道,要将对象p注入到对象a,那么首先就必须得生成对象a和对象p,才能执行注入。所以,如果一个类A中有个成员变量p被@Autowried注解,那么@Autowired注入是发生在A的构造方法执行完之后的。

如果想在生成对象时完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,那么久无法在构造函数中实现。为此,可以使用@PostConstruct注解一个方法来完成初始化,@PostConstruct注解的方法将会在依赖注入完成后被自动调用。

Constructor >> @Autowired >> @PostConstruct

以上为个人经验,希望能给大家一个参考,也希望大家多多支持3672js教程。

您可能感兴趣的文章:
  • 解决spring懒加载以及@PostConstruct结合的坑
  • SpringBoot使用@PostConstruct注解导入配置方式
  • springboot @PostConstruct无效的解决
  • 浅谈SpringBoot中的Bean初始化方法 @PostConstruct
  • 基于@PostConstruct注解的使用,解决向静态变量注入值
  • SpringBoot @PostConstruct和@PreDestroy的使用说明
相关栏目:

用户点评