项目场景:
本文介绍spring boot项目启动时执行指定的方法两种常用方式和他们之间的区别。
实现方案:
方式一:使用注解@postconstruct
@component public class postconstructtest { @postconstruct public void postconstruct() { system.out.println("启动时自动执行 @postconstruct 注解方法"); } }
优点: 简单方便,加上一个注解就行了。
缺点:如果@postconstruct方法内的逻辑处理时间较长,就会增加springboot应用初始化bean的时间,进而增加应用启动的时间。因为只有在bean初始化完成后,springboot应用才会打开端口提供服务,所以在此之前,应用不可访问。
建议:轻量的逻辑可放在bean的@postconstruct方法中,耗时长的逻辑如果放在@postconstruct方法中,可使用@async异步方法。
使用异步代码示例:
@service public class testservice { @async("testasync") //指定线程池 public void test() { system.out.println("------------------------异步方法开始 " + thread.currentthread().getname()); try { thread.sleep(3000); } catch (interruptedexception e) { e.printstacktrace(); } system.out.println("----------------异步方法执行完了" + thread.currentthread().getname()); } }
@component public class postconstructtest { @autowired private testservice testservice; @postconstruct public void postconstruct() { system.out.println("启动时自动执行 @postconstruct 注解方法"); testservice.test(); } }
spring boot中多个postconstruct注解执行顺序控制
方式二:实现commandlinerunner接口
@component public class commandlinerunnerimpl implements commandlinerunner { @override public void run(string... args) throws exception { system.out.println("启动时自动执行 commandlinerunner 的 run 方法"); } }
优点: 项目已经初始化完毕,才会执行方法,所以不用等这个方法执行完,就可以正常提供服务了。
缺点:暂未发现。
到此这篇关于springboot项目启动时执行指定的方法的文章就介绍到这了,更多相关springboot项目启动时执行指定内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论