SpringBoot项⽬启动时如何读取配置以及初始化资源介绍
在开发过程中,我们有时候会遇到⾮接⼝调⽤⽽出发程序执⾏任务的⼀些场景,⽐如我们使⽤quartz定时框架通过配置⽂件来启动定时任务时,或者⼀些初始化资源场景等触发的任务执⾏场景。
⽅法⼀:注解
⽅案
通过使⽤注解@Configuration和@Bean来初始化资源,配置⽂件当然还是通过@Value进⾏注⼊。
@Configuration:⽤于定义配置类,可替换xml配置⽂件,被注解的类内部⼀般是包含了⼀个或者多个@Bean注解的⽅法。
@Bean:产⽣⼀个Bean对象,然后将Bean对象交给Spring管理,被注解的⽅法是会被
AnnotationConfigApplicationContext或者AnnotationConfgWebApplicationContext扫描,⽤于构建bean定义,从⽽初始化Spring容器。产⽣这个对象的⽅法Spring只会调⽤⼀次,之后Spring就会将这个Bean对象放⼊⾃⼰的Ioc容器中。
补充@Configuration加载Spring:
1. @Configuration配置spring并启动spring容器
2. @Configuration启动容器+@Bean注册Bean
3. @Configuration启动容器+@Component注册Bean
4. 使⽤ AnnotationConfigApplicationContext 注册 AppContext 类的两种⽅法
5. 配置Web应⽤程序(l中配置AnnotationConfigApplicationContext)
⽰例
ample.f;
import org.springframework.beans.factory.annotation.Value;
import t.annotation.Bean;
import t.annotation.Configuration;
/**
* @author andya
* @create 2020-06-24 14:37
*/
@Configuration
public class InitConfigTest {
@Value("${key}")
private String key;
@Bean
public String testInit(){
System.out.println("init key: " + key);
return key;
}
}
⽅法⼆:CommandLineRunner
⽅案
实现CommandLineRunner接⼝,该接⼝中的Component会在所有Spring的Beans都初始化之后,在SpringApplication的run()之前执⾏。
多个类需要有顺序的初始化资源时,我们还可以通过类注解@Order(n)进⾏优先级控制
⽰例
ample.andya.demo.service;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
/**
* @author andya
* @create 2020-06-24 14:47
*/
@Component
public class CommandLineRunnerTest implements CommandLineRunner {
@Value("${key}")
private String key;
@Override
public void strings) throws Exception {
System.out.println("command line runner, init key: " + key);
spring ioc注解
}
}
两个⽰例的运⾏结果
总结
到此这篇关于SpringBoot项⽬启动时如何读取配置以及初始化资源的⽂章就介绍到这了,更多相关SpringBoot启动时读取配置及初始化资源内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论