SpringBoot 配置分析(一)
2018-08-16 本文已影响59人
上进的小二狗
一、引言
二、文章思维导图
思维导图三、实现
3.1 获取配置的值,2种方式
方式一:获取environment 对象 调用getProperty()
local.ip = 192.168.91.111
@SpringBootApplication
public class SpringbootConfigurationApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(SpringbootConfigurationApplication.class, args);
System.out.println("配置文件内容输出:"+context.getEnvironment().getProperty("local.ip"));
context.close();
}
}
结果打印:
纳入容器管理,需要Environment 对象注入,
再编写个类UserConfig,注入Environment,编写个show 的方法,context 来获取对象来调用方法
/**
* @author liyao
* @createTime 2018/8/16
* @description
*/
@Component
public class UserConfig {
@Autowired
private Environment environment;
/**
* 配置文件信息打印
*/
public void show(){
System.out.println("=========local.ip:" + environment.getProperty("local.ip"));
}
}
@SpringBootApplication
public class SpringbootConfigurationApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(SpringbootConfigurationApplication.class, args);
// System.out.println("配置文件内容输出:"+context.getEnvironment().getProperty("local.ip"));
context.getBean(UserConfig.class).show();
context.close();
}
}
结果打印:
方式二:直接读取配置文件@Value("${ }")
1、配置文件中加个 local.port = 8080
local.ip = 192.168.91.111
local.port = 8080
2、定义属性
@Component
public class UserConfig {
@Value("${local.port}")
private String localPort;
@Autowired
private Environment environment;
/**
* 配置文件信息打印
*/
public void show(){
System.out.println("方式1 =========local.ip:" + environment.getProperty("local.ip"));
System.out.println("方式2 =========local.port:" + localPort);
}
}
结果打印:
3.2、配置文件中变量的引用获取
1、配置文件添加
name = springboot
app.name= this is ${name}
2、引用输出
@Component
public class UserConfig {
@Value("${local.port}")
private String localPort;
@Autowired
private Environment environment;
/**
* 配置文件信息打印
*/
public void show(){
System.out.println("方式1 local.ip:" + environment.getProperty("local.ip"));
System.out.println("方式2 local.port:" + localPort);
System.out.println("======================================================");
System.out.println("name: " + environment.getProperty("name"));
System.out.println("app.name: " + environment.getProperty("app.name"));
}
}
结果打印:
3.3 配置文件默认值配置
@Value 默认必须要有配置,配置项可以为空,如果没有配置项,则可以给默认值。
情况如下:
@Component
public class UserConfig {
@Value("${local.port}")
private String localPort;
/**
* @Value 默认必须要有配置,配置项可以为空,如果没有配置项,则可以给默认值
*/
@Value("${tomcat.port:9090}")
private String tomcatPort;
@Autowired
private Environment environment;
/**
* 配置文件信息打印
*/
public void show(){
System.out.println("方式1 local.ip:" + environment.getProperty("local.ip"));
System.out.println("方式2 local.port:" + localPort);
System.out.println("======================================================");
System.out.println("name: " + environment.getProperty("name"));
System.out.println("app.name: " + environment.getProperty("app.name"));
System.out.println("======================================================");
System.out.println("tomcatPort 默认值输出:" + tomcatPort);
}
}
1、配置文件配置了
tomcat.port
但是不给值
输出为空
输出空2、配置文件里面 删除
tomcat.port
给上默认值
@Value("${tomcat.port:9090}")
private String tomcatPort;
则输出默认值:
输出默认值
3.4 配置文件的位置
1、项目的resources即一个classpath下的/config包
2、项目的resources即classpath根路径(root)
3、file :/
4、file :config /
3.5 引入外部文件
方式一:启动参数配置
1、默认的配置文件名字可以使用
--spring.config.name 来指定只需要指定文件的名字,扩展名可忽略
2、默认的配置文件路径可以使用
--spring.config.location 来指定,配置文件需要指定全路径,包括目录和文件的名字,还可以指定多个配置文件,用逗号隔开
方式二:注解开发
@Configuration
@PropertySource("classpath:jdbc.properties")
@PropertySources
配置文件中的配置项放入类中加载
@ConfigurationProperties(prefix="ds",locations="")
3.7 配置文件注入集合、数组
六、动态的引入配置文件
通过自己的逻辑随意的增加些读取些配置
七、配置文件动态处理、集中化管理,springboot已有
任意的读取配置,加入自己的逻辑
集中处理配置文件
八、springboot profile
application.properties
编程的方式指定