在开发时有时候需要在整个应用开始运行时执行一些特定代码,比如初始化环境,准备测试数据等等。
在Spring中可以通过ApplicationListener来实现相关的功能,不过在配合Spring Boot使用时就稍微有些区别了。
创建ApplicationListener
这里以填充部分测试数据为例子,首先实现ApplicationStartup类。
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的入口,包含所有的配置。
@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中配置
spring.profiles.active=dev
然后在application-dev.properties中配置开发环境的参数。
增加一个配置来注册自定义的监听器
context.listener.classes=cn.acgmo.ApplicationStartup
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍详解SpringBoot程序启动时执行初始化代码,包括了详解SpringBoot程序启动时执行初始化代码的使用技巧和注意事项,需要的朋友参考一下 因项目集成了Redis缓存部分数据,需要在程序启动时将数据加载到Redis中,即初始化数据到Redis。 在SpringBoot项目下,即在容器初始化完毕后执行我们自己的初始化代码。 第一步:创建实现ApplicationListener接
本文向大家介绍SpringBoot Tomcat启动实例代码详解,包括了SpringBoot Tomcat启动实例代码详解的使用技巧和注意事项,需要的朋友参考一下 废话不多了,具体内容如下所示: 注意: 启动类放在项目的包的最外层最好,这样可以扫描到所有的包路径。 controller: pom 注意:如果想用tomcat7启动要制定你的tomcat版本号。 项目 总结 以上所述是小编给大家介绍的
遇到这样的一个情况,有个定时任务启动间隔比较小,每分钟执行一次,然后在项目启动第一次执行的时候mybatis还没有完全初始化完成,导致报错了 我该怎么控制任务在mybatis初始化完成之后再启动 查了些order设置顺序啥的好像不符合我的要求 我的任务是 ThreadPoolTaskScheduler来实现,任务里面用了 SqlSession sqlSession = sqlSessionFact
本文向大家介绍详解springboot热启动与热部署,包括了详解springboot热启动与热部署的使用技巧和注意事项,需要的朋友参考一下 一、热启动: 每自修改后, 程序自动启动spring Application上下文。 Pom中直接添加依赖即可: 这里需要注意的是每次类文件更改后需要重新编译方可触发服务重新启动 二、热交换或热部署 这个使用springloaded插件。 1.添加依赖: 如果
我希望所有执行器endpoint(在文档中描述)都可用。在文档之后,添加了启动器启动器依赖项和属性,但大多数endpoint不可用(HTTP 404)。 唯一可用的endpoint是,但它显示无用的信息: 添加属性。 添加了依赖项: 获取/执行器的结果 启用执行器endpoint的最小设置是什么?
我有一个带有控制器的Spring portlet,其结构如下。 这是我之前问题的变体,我没有得到任何答案。 我们有时会重启服务器。我们希望避免外部人员再次手动执行调度。由于它目前是一个portlet,因此有必要呈现视图,以便执行此代码。有没有办法在liferay服务器启动后立即自动执行此调度代码?