SpringBoot的ApplicationRunner 博客分类: springboot springboot
程序员文章站
2024-03-16 15:34:52
...
在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot给我们提供了两个接口来帮助我们实现这种需求。这两个接口分别为CommandLineRunner和ApplicationRunner。他们的执行时机为容器启动完成的时候---此时需要的bean都已经具备。
这两个接口中有一个run方法,我们只需要实现这个方法即可。这两个接口的不同之处在于:ApplicationRunner中run方法的参数为ApplicationArguments,而CommandLineRunner接口中run方法的参数为String数组。目前我在项目中用的是ApplicationRunner。是这么实现的:
/* * << * Davinci * == * Copyright (C) 2016 - 2019 EDP * == * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * >> * */ package edp.davinci.runner; import edp.core.utils.CustomDataSourceUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.boot.SpringApplication; import org.springframework.context.ApplicationContext; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @Order(1) @Component @Slf4j public class CustomDataSourceRunner implements ApplicationRunner { @Value("${custom-datasource-driver-path}") private String dataSourceYamlPath; @Autowired private ApplicationContext applicationContext; @Override public void run(ApplicationArguments args) { try { CustomDataSourceUtils.loadAllFromYaml(dataSourceYamlPath); } catch (Exception e) { log.error("{}", e.getMessage()); SpringApplication.exit(applicationContext); log.info("Server shutdown"); } log.info("Load custom datasource finish"); } }
参考:https://blog.csdn.net/jdd92/article/details/81053404
上一篇: AABB与OOB包围盒子
推荐阅读
-
SpringBoot的ApplicationRunner 博客分类: springboot springboot
-
Springboot(三)、缓存中间件Redis的使用
-
在springboot项目中如何根据部门ID查询其上下级所有数据,生成树形结构的数据
-
百度云服务器上centos7安装jdk并且运行springboot的jar包
-
SpringBoot读取自定义的Properties
-
Springboot读取自定义properties文件和application.properties文件的值
-
springboot 读取自定义.properties 文件的内容
-
JAR包读取jar包内部和外部的配置文件,springboot读取外部配置文件的方法(优先级配置)
-
springboot2.4.1跨域设置的变化 博客分类: spring boot 实践笔记 springboot2.4.1跨域
-
spring boot访问autoconfig等敏感端点401 博客分类: Springboot springboot安全401