在Spring Boot启动后执行指定代码
在开发时有时候需要在整个应用开始运行时执行一些特定代码,比如初始化环境,准备测试数据等等。
在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
|
@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
|
在Spring Boot启动后执行指定代码的更多相关文章
- spring boot 启动后执行初始化方法
http://blog.csdn.net/catoop/article/details/50501710 1.创建实现接口 CommandLineRunner 的类 package org.sprin ...
- spring boot启动后执行方法
@Componentpublic class InitProject implements ApplicationRunner { private static final Logger logger ...
- springboot框架实现启动项目执行指定代码
说明: 当有写代码需要在项目启动时执行的时候(即项目启动完成前),可以使用这个方法. 步骤: 创建一个启动类并在类上打上@Component注解 让这个类实现CommandLineRunner接口 重 ...
- idea中spring boot启动后无法访问jsp
出自:https://www.jianshu.com/p/470b28d76147 第一种: 打开File > Project Structure > Facetes 如图1: 图1 如果 ...
- Spring boot启动后没有生成日志文件问题排错
我的配置是: logging.file.name=spring-boot.log logging.file.path=D:/log/ 系统启动后日志文件没有生成 原因:一开始以为这两个属性是配合着使用 ...
- spring boot, 容器启动后执行某操作
常有在spring容器启动后执行某些操作的需求,现做了一个demo的实现,做一下记录,也希望可以给需要的同学提供参考. 1.spring启动后,以新线程执行后续需要的操作,所以执行类实现Runnabl ...
- Spring Boot项目指定启动后执行的操作
Spring Boot项目指定启动后执行的操作: (1)实现CommandLineRunner 接口 (2)重写run方法 (3)声明执行顺序@Order(1),数值越小,优先级越高 (4)如果需要注 ...
- spring boot 配置启动后执行sql, 中文乱码
spring.datasource.schema指定启动后执行的sql文件位置. 我发现中文乱码,原因是没有指定执行sql script encoding: spring: datasource: u ...
- Springboot 项目启动后执行某些自定义代码
Springboot 项目启动后执行某些自定义代码 Springboot给我们提供了两种"开机启动"某些方法的方式:ApplicationRunner和CommandLineRun ...
随机推荐
- ServiceStack 入门(二)
本文介绍创建一个简单的基于ServiceStack的项目. 1. 新建一个solution 2.创建完成后有4个project. ServiceModel是定义Request DTO 和 Reques ...
- 完全卸载oracle10G/11G步骤
从oracle前台卸载oracle后重新安装会安装不了,需要完全卸载: 完全卸载oracle11g步骤:1. 开始->设置->控制面板->管理工具->服务 停止所有Oracle ...
- 字符串分割--Java中String.split()用法
转载自:http://blog.163.com/zs_note/blog/static/199386112201110804233558/ 在java.lang包中有String.split()方法, ...
- nginx proxy_pass 后面的斜杠
# add / location /app/ { proxy_pass http://$backend/; } # location /app/ { proxy_pass http://$backen ...
- 戏说Java多线程
戏说Java多线程. package com.cmp.chengfu.app.jdk6.desktop; import java.awt.Desktop; import java.io.File; i ...
- 我的Fedora22美化日记
首先我说一下,我命令是乱打的[不要打我],用之前先google 配置RPMFusion仓库 $ sudo dnf install --nogpgcheck http://download1.rpmfu ...
- Python2.7.3 学习——第一个程序 Hello Python World
Hello World 每学一门语言开始的第一程序都是Hello World ,当然了Python也不例外,下面开始我们的Python第一个程序编写: 1,命令行: (1)打开终端,输入python, ...
- ubantu root 默认密码
安装完Ubuntu后忽然意识到没有设置root密码,不知道密码自然就无法进入根用户下.到网上搜了一下,原来是这麽回事.Ubuntu的默认root密码是随机的,即每次开机都有一个新的root密码.我们可 ...
- Qt限制文本框输入的方法(使用QRegExpValidator,为QLineEdit所独有)
在做界面编程的时候,对文本框的处理往往是个很头疼的事情,一是焦点进入文本框时,从人性化考虑,应选择文本框中文本,方便输入:二是,限制文本框的输入,只允许输入有效的文本,如果不这样做的话,那么就需要在程 ...
- vb.net 操作xml
xml文件: <?xml version="1.0" encoding="gb2312"?> <bookstore> <book ...