springboot初始化逻辑_SpringBoot项目启动时做一些初始化工作的五种方式

本文介绍了在SpringBoot项目启动时执行初始化代码的五种常见方式:1) 使用@PostConstruct注解;2) 实现CommandLineRunner接口;3) 实现ApplicationRunner接口;4) 继承InitializingBean接口;5) 监听ContextRefreshedEvent事件。文中给出了详细的代码示例,适用于需要在服务启动时自动执行业务逻辑的场景。
摘要由CSDN通过智能技术生成

前言

通常的我们的项目开发中,经常会遇到那种在服务一启动就需要自动执行一些业务代码的情况。比如将数据库中的配置信息或者数据字典之类的缓存到redis,或者在服务启动的时候将一些配置化的定时任务开起来。关于spring mvc或者springboot如何在项目启动的时候就执行一些代码,方法其实有很多,我这边介绍一下我使用过的三种。

1、@PostConstruct 注解

从Java EE5规范开始,Servlet中增加了两个影响Servlet生命周期的注解,@PostConstruct和@PreDestroy,这两个注解被用来修饰一个非静态的void()方法。@PostConstruct会在所在类的构造函数执行之后执行,在init()方法执行之前执行。(@PreDestroy注解的方法会在这个类的destory()方法执行之后执行.)

使用示例:在Spring容器加载之后,启动定时任务读取数据库配置的。在这里我使用@PostConstruct 指定了需要启动的方法。

@Component // 注意 这里必须有

public class StartAllJobInit {

protected Logger logger = LoggerFactory.getLogger(getClass().getName());

@Autowired

JobInfoService jobInfoService;

@Autowired

JobTaskUtil jobTaskUtil;

@PostConstruct // 构造函数之后执行

public void init(){

System.out.println("容器启动后执行");

startJob();

}

public void startJob() {

Listlist = jobInfoService.findList();

for (JobInfoBO jobinfo :list) {

try {

if("0".equals(jobinfo.getStartWithrun())){

logger.info("任务{}未设置自动启动。", jobinfo.getJobName());

jobInfoService.updateJobStatus(jobinfo.getId(), BasicsConstantManual.BASICS_SYS_JOB_STATUS_STOP);

}else{

logger.info(&

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值