详解如何在Spring Boot启动后执行指定代码
在开发时有时候需要在整个应用开始运行时执行一些特定代码,比如初始化环境,准备测试数据等等。
在Spring中可以通过ApplicationListener来实现相关的功能,不过在配合SpringBoot使用时就稍微有些区别了。
创建ApplicationListener
这里以填充部分测试数据为例子,首先实现ApplicationStartup类。
publicclassApplicationStartupimplementsApplicationListener{ @Override publicvoidonApplicationEvent(ContextRefreshedEventevent){ SourceRepositorysourceRepository=event.getApplicationContext().getBean(SourceRepository.class); Sourceje=newSource("justice_eternal吧","http://tieba.baidu.com/f?kw=justice_eternal"); sourceRepository.save(je); } }
这类并不会自动执行,需要我们注册。
硬编码注册
SpringBoot有一个类SpringApplication,这个类是SpringBoot的入口,包含所有的配置。
@Configuration @ComponentScan @EnableAutoConfiguration publicclassWebApplication { publicstaticvoidmain(String[]args) { SpringApplicationspringApplication=newSpringApplication(WebApplication.class); springApplication.addListeners(newApplicationStartup()); springApplication.run(args); } }
硬编码的弊端在于无法区别环境,当我们需要部署应用到生产环境时需要修改代码。
配置文件
SpringBoot支持profiles模式,在application.properties中配置
spring.profiles.active=dev
然后在application-dev.properties中配置开发环境的参数。
增加一个配置来注册自定义的监听器
context.listener.classes=cn.acgmo.ApplicationStartup
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。