在开发时有时候需要在整个应用开始运行时执行一些特定代码,比如初始化环境,准备测试数据等等。

在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启动后执行指定代码的更多相关文章

  1. spring boot 启动后执行初始化方法

    http://blog.csdn.net/catoop/article/details/50501710 1.创建实现接口 CommandLineRunner 的类 package org.sprin ...

  2. spring boot启动后执行方法

    @Componentpublic class InitProject implements ApplicationRunner { private static final Logger logger ...

  3. springboot框架实现启动项目执行指定代码

    说明: 当有写代码需要在项目启动时执行的时候(即项目启动完成前),可以使用这个方法. 步骤: 创建一个启动类并在类上打上@Component注解 让这个类实现CommandLineRunner接口 重 ...

  4. idea中spring boot启动后无法访问jsp

    出自:https://www.jianshu.com/p/470b28d76147 第一种: 打开File > Project Structure > Facetes 如图1: 图1 如果 ...

  5. Spring boot启动后没有生成日志文件问题排错

    我的配置是: logging.file.name=spring-boot.log logging.file.path=D:/log/ 系统启动后日志文件没有生成 原因:一开始以为这两个属性是配合着使用 ...

  6. spring boot, 容器启动后执行某操作

    常有在spring容器启动后执行某些操作的需求,现做了一个demo的实现,做一下记录,也希望可以给需要的同学提供参考. 1.spring启动后,以新线程执行后续需要的操作,所以执行类实现Runnabl ...

  7. Spring Boot项目指定启动后执行的操作

    Spring Boot项目指定启动后执行的操作: (1)实现CommandLineRunner 接口 (2)重写run方法 (3)声明执行顺序@Order(1),数值越小,优先级越高 (4)如果需要注 ...

  8. spring boot 配置启动后执行sql, 中文乱码

    spring.datasource.schema指定启动后执行的sql文件位置. 我发现中文乱码,原因是没有指定执行sql script encoding: spring: datasource: u ...

  9. Springboot 项目启动后执行某些自定义代码

    Springboot 项目启动后执行某些自定义代码 Springboot给我们提供了两种"开机启动"某些方法的方式:ApplicationRunner和CommandLineRun ...

随机推荐

  1. 跟我一起学写jQuery插件开发方法(转载)

    jQuery如此流行,各式各样的jQuery插件也是满天飞.你有没有想过把自己的一些常用的JS功能也写成jQuery插件呢?如果你的答案是肯定的,那么来吧!和我一起学写jQuery插件吧!     很 ...

  2. VB.NET中vbcr 是回车、vbcrlf 是回车和换行的结合、vblf 是换行

    cr 是回车,是到本行的头部 lf 是换行,是到下一行 crlf 是到下一行的头部 vbcrlf=vbcr   &   vblf Windows     一般使用vbcrlf换行 Unix   ...

  3. 用原生JS写移动动画案例及实际应用

    js很强大 相信很多人都知道,那么它有哪些强大之处呢?有兴趣的人可以去查查,这里就不赘述了,因为不在本片文章讨论的范围. 我们要讲的是怎么用原生JS写移动动画?我们先举一个最简单的动画例子,很多网站的 ...

  4. 小鱼提问1 类中嵌套public修饰的枚举,外部访问的时候却只能Class.Enum这样访问,这是为何?

    /// <summary> /// 常量等定义 /// </summary> public class General { /// <summary> /// 文件 ...

  5. SGU 310. Hippopotamus( 状压dp )

    题目大意:给N块板, 有A,B2种类型的板, 要求任意M块连续的板中至少有K块B板.1≤n≤60,1≤m≤15,0≤k≤m≤n. dp(x, s)表示第x块板, x前M块板的状态为s, 然后合法状态转 ...

  6. iReport 4.1 报表制作,子报表,实例解析

    开发使用步骤(iReport 4.1.1) (个人总结,如有问题请留言,另外知道table控件用法的给我留言或者发邮件谢谢.Email:jiazx0107@163.com) 目录 1.      开发 ...

  7. R与数据分析旧笔记(三)不知道取什么题目

    连线图 > a=c(2,3,4,5,6) > b=c(4,7,8,9,12) > plot(a,b,type="l") 多条曲线效果 plot(rain$Toky ...

  8. poj 2584 T-Shirt Gumbo 网络流

    题目链接 有5种T-shirt, n个人, 每个人可以接受某些种T-shirt, 每种T-shirt的数量已知, 问每个人能否都穿上自己能接受的T-shirt. 源点向每种T-shirt连边, 权值为 ...

  9. 用rsync从Linux到Windows远程备份

    论 rsync是Linux系统下的数据镜像备份工具,从软件的命名上就可以看出来 了——remote sync.rsync支持大多数的类Unix系统,无论是Linux.Solaris还是BSD上都经过了 ...

  10. android ListView的上部下拉刷新下部点击加载更多具体实现及拓展

    android ListView的上部下拉刷新下部点击加载更多具体实现及拓展 ListView下拉刷新,上拉自动加载更多 下拉刷新以及加载更多