浅谈@PostConstruct不被调用的原因

 更新时间:2022年02月22日 17:02:09   作者:大江大河大12138  
这篇文章主要介绍了浅谈@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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用Java判定一个数值是否在指定的开闭区间范围内

    使用Java判定一个数值是否在指定的开闭区间范围内

    这篇文章主要给大家介绍了关于使用Java判定一个数值是否在指定的开闭区间范围内的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友可以参考下
    2022-09-09
  • Java的可变参数与Collections类的功能示例解析

    Java的可变参数与Collections类的功能示例解析

    这篇文章主要为大家介绍了Java的可变参数与Collections类的功能示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 基于JavaCore文件的深入分析

    基于JavaCore文件的深入分析

    本篇文章介绍了,对JavaCore文件的深入分析。需要的朋友参考下
    2013-05-05
  • 一篇文章带你了解JAVA面对对象之继承与修饰符

    一篇文章带你了解JAVA面对对象之继承与修饰符

    这篇文章主要介绍了Java面向对象编程之类的继承,结合实例形式较为详细的分析了Java面向对象编程类的概念、功能、使用方法及相关注意事项,需要的朋友可以参考下
    2021-08-08
  • 关于Springboot打成JAR包后读取外部配置文件的问题

    关于Springboot打成JAR包后读取外部配置文件的问题

    这篇文章主要介绍了关于Springboot打成JAR包后读取外部配置文件的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Java结束线程的三种方法及该如何选择

    Java结束线程的三种方法及该如何选择

    这篇文章主要介绍了Java结束线程的三种方法及该如何选择,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-03-03
  • SpringAOP 如何通过JoinPoint获取参数名和值

    SpringAOP 如何通过JoinPoint获取参数名和值

    这篇文章主要介绍了SpringAOP 通过JoinPoint获取参数名和值的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • SpringBoot+Quartz+数据库存储的完美集合

    SpringBoot+Quartz+数据库存储的完美集合

    这篇文章主要介绍了SpringBoot+Quartz+数据库存储的示例代码,本文通过实例代码图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • SpringBoot整合mybatisplus和druid的示例详解

    SpringBoot整合mybatisplus和druid的示例详解

    这篇文章主要介绍了SpringBoot整合mybatisplus和druid的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • java使用xstream实现xml文件和对象之间的相互转换

    java使用xstream实现xml文件和对象之间的相互转换

    xml是一个用途比较广泛的文件类型,在java里也自带解析xml的包,但是本文使用的是xstream来实现xml和对象之间的相互转换,xstream是一个第三方开源框架,使用起来比较方便,对java xml和对象转换相关知识感兴趣的朋友一起看看吧
    2023-09-09

最新评论