在开发时有时候需要在整个应用开始运行时执行一些特定代码,比如初始化环境,准备测试数据等等。
在spring中可以通过applicationlistener来实现相关的功能,不过在配合spring boot使用时就稍微有些区别了。
创建applicationlistener
这里以填充部分测试数据为例子,首先实现applicationstartup类。
1
2
3
4
5
6
7
8
|
publicclass applicationstartup implements applicationlistener<contextrefreshedevent> { @override publicvoidonapplicationevent(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
11
12
13
14
15
16
17
18
19
20
21
|
@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中配置
1
|
spring.profiles.active=dev |
然后在application-dev.properties中配置开发环境的参数。
增加一个配置来注册自定义的监听器
1
|
context.listener.classes=cn.acgmo.applicationstartup |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/xiaoyu411502/article/details/51396568