十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
今天就跟大家聊聊有关怎么在Spring Boot中启动及退出加载项,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
十年建站经验, 网站设计、成都网站制作客户的见证与正确选择。创新互联提供完善的营销型网页建站明细报价表。后期开发更加便捷高效,我们致力于追求更美、更快、更规范。
如果你需要在启动SpringApplication后执行一些具体的代码,你可以实现ApplicaitonRunner
或者CommandLineRunner
接口。两个接口都实现了一个工作方式相同的run
方法,该方法仅会在SpringApplication.run(...)前执行。
唯一不同的是实现CommandLineRunner
接口的run
方法参数为String
类型,而实现ApplicaitonRunner
的run
方法的参数则是需要ApplicationArguments
。官方文档中有个例子供参考。
如果有多个ApplicaitonRunner
或者CommandLineRunner
接口的实现存在启动顺序,则可以使用org.springframework.core.Ordered
接口或者org.springframework.core.annotation.Order
注解的形式来给他们排序。
由于我没有参数类型等的限制,所以用哪个接口都一样,写个跟官方不一样的,于是代码大概长这样:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; @Component public class InstructionStart implements ApplicationRunner { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private JdbcTemplate template; @Override public void run(ApplicationArguments applicationArguments) throws Exception { String increment = "0"; logger.info("初始化递增起始值为:{}", increment); template.execute("ALTER TABLE `table` AUTO_INCREMENT = " + increment); } }
深刻的意识到脑子和屁股一样重要。
写完启动项,那么再把退出也说一下:
每一个SpringApplication
都应该向JVM
注册一个钩子函数来确保ApplicationContext
能优雅地关闭。使所有的标准Spring
生命周期回调(例如DisposableBean
接口和@PreDestroy
注解)都可用。
此外,如果你希望beans在调用SpringApplication.exit()
时返回特定的退出代码,则可以实现org.springframework.boot.ExitCodeGenerator
接口,这些退出代码会被传给System.exit()
作为返回的状态码。官方还给了个例子,就是下面这个。
@SpringBootApplication public class ExitCodeApplication { @Bean public ExitCodeGenerator exitCodeGenerator() { return () -> 42; } public static void main(String[] args) { System.exit(SpringApplication .exit(SpringApplication.run(ExitCodeApplication.class, args))); } }
当然,ExitCodeGenerator
也可以由异常来实现,当遇到一个这样的异常时,Sprin Boot会返回实现了getExitCode()
方法的退出代码。
springboot一种全新的编程规范,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,SpringBoot也是一个服务于框架的框架,服务范围是简化配置文件。
看完上述内容,你们对怎么在Spring Boot中启动及退出加载项有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。