java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > @PostConstruct注解

Spring中的@PostConstruct注解使用详解

作者:wh柒八九

这篇文章主要介绍了Spring中的@PostConstruct注解使用详解,该注解被用来修饰一个非静态的void方法,被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次,需要的朋友可以参考下

使用场景

我们在开发过程中会有这样的场景:需要在项目启动后执行一些操作,比如:读取配置文件信息,数据库连接,删除临时文件,清除缓存信息,工厂类初始化等。我们会有多种的实现方式,例如@PostConstruct 、CommandLineRunner、ApplicationRunner、ApplicationListener都可以实现在springboot启动后执行我们特定的逻辑,接下对比下他们的区别

@PostConstruct注解

该注解被用来修饰一个非静态的void方法,被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。

触发时机

SpringBoot会把标记了Bean相关注解(例如@Component、@Service、@Repository等)的类或接口自动初始化全局的单一实例,如果标记了初始化顺序会按照用户标记的顺序,否则按照默认顺序初始化。在初始化的过程中,执行完一个Bean的构造方法后会执行该Bean的@PostConstruct方法(如果有),然后初始化下一个Bean。

spring中bean的创建过程

配置Bean(@Component、@Service、@Controller等注解配置) -----> 解析为Bean的元数据(Bean容器中的BeanDefinition对象) --> 根据Bean的元数据生成Bean(创建bean)

创建bean的时候执行顺序

Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)

程序使用实例

package com.wideth.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;

@Slf4j
@Component
public class PostConstructConfig {

    @PostConstruct
    public void myPostConstruct(){

        log.info("=============>>>myPostConstruct方法init");
    }
}

在这里插入图片描述

优缺点

优点

缺点

到此这篇关于Spring中的@PostConstruct注解使用详解的文章就介绍到这了,更多相关@PostConstruct注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文