自学内容网 自学内容网

如何spring启动过程中做一些额外操作

ApplicationReadyEvent

        在应用程序启动时,可以通过监听应用启动事件,或者在应用的初始化阶段,加一些需要的操作。
        ApplicationReadyEvent 是 Spring Boot 框架中的一个事件类,它表示应用程序已经准备好接收请求,即应用程序已启动且上下文已刷新。这个事件是在 ApplicationContext 被初始化和刷新,并且应用程序已经准备好处理请求时触发的。
        基于ApplicationReadyEvent,我们可以在应用程序完全启动并处于可用状态后执行一些初始化逻辑。使用@EventListener 注解或实现 ApplicationListener 接口来监听这个事件。例如,使用 @EventListener 注解:

    @EventListener(ApplicationReadyEvent.class)
    public void preloadcache(){
        //在应用启动后执行缓存预热逻辑// ..
    }

Runner

        如果你不想直接监听ApplicationReadyEvent,在SpringBoot中,也可以通过CommandLineRunner 和ApplicationRunner 来实现这个功能。
        CommandLineRunner 和 ApplicationRunner 是Spring Boot 中用于在应用程序启动后执行特定逻辑的接口。这解释听上去就像是专门干这个事儿的。

package com.sinosoft.urdp.module.delay.service.delay;

import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class MyTestRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        //添加自己需要的一些操作
    }
}
package com.sinosoft.urdp.module.delay.service.delay;

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

@Component
public class MyTestRunner implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
           //添加自己需要的一些操作
    }
}

使用@PostConstruct注解

类似的,我们还可以使用 @PostConstruct 注解标注一个方法,该方法将在 Bean 的构造函数执行完毕后立即被调用。在这个方法中执行缓存预热的逻辑。

@Component
public class PreCacheloader {
    @PostConstruct
    public void preloadcache(){
        // 执行缓存预热逻辑
    }
}

使用InitializingBean接口

实现 InitializingBean 接口,并在 afterPropertiesSet 方法中执行缓存预热的逻辑。这样,Spring 在初始化Bean 时会调用 afterPropertiesSet 方法。

package com.sinosoft.urdp.module.delay.service.delay;


import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

@Component
public class MyTestRunner implements InitializingBean {

    @Override
    public void afterPropertiesSet() throws Exception {
        //执行需要的操作
    }
}


原文地址:https://blog.csdn.net/weixin_43522117/article/details/142392203

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!