SpringBoot中的@PostConstruct注解详细解析
前言
由JDK提供了@PostConstruct注解,主要用于在Spring容器启动时执行某些操作或者任务,@PostConstruct注解一般放在BEAN的方法上,一旦BEAN初始化完成之后,将会调用这个方法。
一般在Spring框架的项目中使用到@PostConstruct注解时,该注解的方法在整个BEAN初始化中的执行顺序为:Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)。
@PostConstruct:由JSR-250提供,在构造函数执行完之后执行该注解标注的方法,等价于XML配置文件中BEAN的initMethod方法;
@PreDestory:由JSR-250提供,在BEAN销毁之前执行该注解标注的方法,等价于XML配置文件中BEAN的destroyMethod方法。
注解源码
package javax.annotation; import java.lang.annotation.*; import static java.lang.annotation.ElementType.*; import static java.lang.annotation.RetentionPolicy.*; @Documented @Retention (RUNTIME) @Target(METHOD) public @interface PostConstruct { }
使用场景
使用@PostConstruct注解能够在当前类加载时,为当前类初始化一些数据。
通常在Service的实现类中,如果想在当前类加载的时候进行一系列的初始化操作,这时就可以使用@PostConstruct。
@PostConstruct可以在容器没有完全启动的情况下能够进行初始化操作。
如何使用
①. 方式一
@Component @Slf4j public class SimpleExampleBean { @PostConstruct public void init(){ log.info("BEAN初始化完毕,调用INIT()..."); } }
②. 方式二
@Slf4j public class MySimpleExampleBean { public void init(){ log.info("BEAN初始化完毕,调用INIT()..."); } } // 在配置类中通过@Bean实例化这个Bean,@Bean中的initMethod这个属性,需要指定初始化之后需要执行的方法。 @Bean(initMethod = "init") public MySimpleExampleBean mySimpleExampleBean (){ return new MySimpleExampleBean(); }
使用总结
A. 注解修饰的方法是在依赖注入完成之后执行的;
B. 注解修饰的方法除了应用客户端外,不能是静态的;
C. 注解修饰的方法可以是final的;
D. 注解可以修饰一个非静态的void()方法;
E. 注解修饰的方法可以被public、protected、package private 或者private修饰。
到此这篇关于SpringBoot中的@PostConstruct注解详细解析的文章就介绍到这了,更多相关@PostConstruct注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Skywalking改成适配阿里云等带Http Basic的Elasticsearch服务
这篇文章主要介绍了改造Skywalking支持阿里云等带Http Basic的Elasticsearch服务2022-02-02kafka并发写大消息异常TimeoutException排查记录
这篇文章主要为大家介绍了kafka并发写大消息异常TimeoutException的排查记录及解决方案,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步2022-02-02ssm整合之Spring整合MyBatis框架配置事务的详细教程
这篇文章主要介绍了ssm整合之Spring整合MyBatis框架配置事务,本文通过图文实例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-10-10SpringBoot项目网页加载出现Whitelabel Error Page的解决
这篇文章主要介绍了SpringBoot项目网页加载出现Whitelabel Error Page的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-11-11SVN出现提示org.apache.subversion.javahl.ClientException: Attempt
这篇文章主要介绍了SVN出现提示org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir解决方案的相关资料,需要的朋友可以参考下2016-12-12Maven Web项目使用Cargo插件实现自动化部署的详细步骤
cargo ,它是一组帮助用户实现自动化部署,操作Web容器的工具,并且几乎支持所有的Web容器,这篇文章主要介绍了Maven Web项目使用Cargo实现自动化部署,需要的朋友可以参考下2023-02-02
最新评论