您的位置:首页 > 编程语言 > Java开发

在Spring Boot启动后执行指定代码

2016-05-13 16:39 585 查看
在开发时有时候需要在整个应用开始运行时执行一些特定代码,比如初始化环境,准备测试数据等等。

在Spring中可以通过ApplicationListener来实现相关的功能,不过在配合Spring Boot使用时就稍微有些区别了。


创建ApplicationListener

这里以填充部分测试数据为例子,首先实现
ApplicationStartup
类。

12345678publicclass ApplicationStartup implements ApplicationListener<ContextRefreshedEvent> {@OverridepublicvoidonApplicationEvent(ContextRefreshedEvent event) {SourceRepository sourceRepository = event.getApplicationContext().getBean(SourceRepository.class);Source je =new Source("justice_eternal吧","http://tieba.baidu.com/f?kw=justice_eternal");sourceRepository.save(je);}}
这类并不会自动执行,需要我们注册。

硬编码注册

Spring Boot有一个类
SpringApplication
,这个类是Spring Boot的入口,包含所有的配置。

1

2

3

4

5

6

7

8

9

10

@Configuration

@ComponentScan

@EnableAutoConfiguration

publicclass
WebApplication
{

publicstaticvoidmain(String[]
args)
{

SpringApplication
springApplication
=new
SpringApplication(WebApplication.class);

springApplication.addListeners(new
ApplicationStartup());

springApplication.run(args);

}

}

硬编码的弊端在于无法区别环境,当我们需要部署应用到生产环境时需要修改代码。


配置文件

Spring Boot支持profiles模式,在
application.properties
中配置

1spring.profiles.active=dev
然后在
application-dev.properties
中配置开发环境的参数。

增加一个配置来注册自定义的监听器

1

context.listener.classes=cn.acgmo.ApplicationStartup

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: