Spring Boot 配置分析 一
一、创建编写配置文件application.properties
在创建好的Spring Boot 的maven项目的 resources目录下创建配置文件
1.1、配置IP和端口
local.ip=172.22.217.109
local.port=8080
二、获取配置信息实现
@ComponentScan
public class App {
@SuppressWarnings("resource")
public static void main(String[] args) {
//设置指定配置源,启动Spring Boot
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
//获取配置环境对象
ConfigurableEnvironment environment = context.getEnvironment();
//根据配置文件配置属性的key获取value
String ip = environment.getProperty("local.ip");
System.out.println("ip="+ip);
context.close();
}
}
三、获取配置文件信息的两种方法
① @Value() 注解方式
② Environment 对象获取属性方式
/**
* 两种获取配置文件信息的方法
* @author DIDC
*
*/
@Component
public class UserConfig {
//获取配置文件信息方式二
@Value("${local.port}")
private String port;
@Autowired
private Environment environment;
public void show(){
//获取配置文件信息方法一
System.out.println("ip="+environment.getProperty("local.ip"));
System.out.println("port="+port);
}
}
运行测试
@ComponentScan
public class App {
@SuppressWarnings("resource")
public static void main(String[] args) {
//设置指定配置源,启动Spring Boot
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
context.getBean(UserConfig.class).show();
context.close();
}
}
四、引用配置使用
4.1、Application.properties配置文件添加引用配置属性
# 自定义属性
local.ip=172.22.217.109
local.port=8080
# 引用配置
name=springboot
app.name=this is ${name}
4.2、获取引用配置属性
/**
* 两种获取配置文件信息的方法
* @author DIDC
*
*/
@Component
public class UserConfig {
//获取配置文件信息方式二
@Value("${local.port}")
private String port;
@Value("${local.port}")
private Integer iport;
@Autowired
private Environment environment;
public void show(){
//获取配置文件信息方法一
System.out.println("ip="+environment.getProperty("local.ip"));
System.out.println("port="+port);
System.out.println("iport="+iport);
System.out.println("name="+environment.getProperty("name"));
//获取引用配置属性
System.out.println("app.name="+environment.getProperty("app.name"));
}
}
五、默认值使用
/**
* 两种获取配置文件信息的方法
* @author DIDC
*
*/
@Component
public class UserConfig {
//获取配置文件信息方式二
@Value("${local.port}")
private String port;
@Value("${local.port}")
private Integer iport;
/**
* @Value默认值
*
* 使用1、默认值配置必须要有配置项:配置项可以为空
* 使用2、可以没有配置项,但是必须要有默认值,如下
*/
@Value("${tomcat.defaultPort:9090}")
private String defaultPortValue;
@Autowired
private Environment environment;
public void show(){
//获取配置文件信息方法一
System.out.println("ip="+environment.getProperty("local.ip"));
System.out.println("port="+port);
System.out.println("iport="+iport);
System.out.println("name="+environment.getProperty("name"));
//获取引用配置属性
System.out.println("app.name="+environment.getProperty("app.name"));
System.out.println("defaultPortValue="+defaultPortValue);
}
}
六、关于配置文件默认名称和默认路径说明
/**
* 两种获取配置文件信息的方法
* @author DIDC
*
*
*配置文件说明:
*1、配置文件名默认为 application.properties
*2、默认的配置文件位置在 classpath根目录,或者classpath:/config , file:/ , file:/config/
*3、默认的配置文件名字可以使用 --spring.config.name来指定,只需要指定文件的名字,文件扩展名可以省略
*4、默认的配置文件路径可以使用 --spring.config.location来指定
*/
@Component
public class UserConfig {
//获取配置文件信息方式二
@Value("${local.port}")
private String port;
@Value("${local.port}")
private Integer iport;
/**
* @Value默认值
*
* 使用1、默认值配置必须要有配置项:配置项可以为空
* 使用2、可以没有配置项,但是必须要有默认值,如下
*/
@Value("${tomcat.defaultPort:9090}")
private String defaultPortValue;
@Autowired
private Environment environment;
public void show(){
//获取配置文件信息方法一
System.out.println("ip="+environment.getProperty("local.ip"));
System.out.println("port="+port);
System.out.println("iport="+iport);
System.out.println("name="+environment.getProperty("name"));
//获取引用配置属性
System.out.println("app.name="+environment.getProperty("app.name"));
System.out.println("defaultPortValue="+defaultPortValue);
}
}
6.1、配置文件名称为非默认名的具体使用
a.修改配置文件名称为:app.properties
b.启动运行指令操作:选择config方式运行
c.在环境中指定配置文件后运行 :–spring.config.name=app
6.2、配置文件路径为非默认路径的具体使用
① 配置文件路径自定义
② Run选择config
③ 指定配置路径 :–spring.config.location=classpath:conf/app.properties
④ 还可以配置多个配置文件中间以逗号隔开
–spring.config.location=classpath:conf/app.properties,file:/f:/temp/test.properties
6.3、代码方式实现指定配置文件
a.新建一个jdbc.properties 配置文件
jdbc.url=172.22.217.109:3306/mysql
b.创建一个配置源的配置类 FileConfig
@Configuration
//指定配置文件
@PropertySource("classpath:jdbc.properties")
public class FileConfig {
}
c.创建一个获取配置文件属性的对象
@Component//加入容器
public class JdbcConfig {
//获取指定配置文件属性
@Value("${jdbc.url}")
private String url;
public void show(){
System.out.println("jdbc.url="+url);
}
}
d.启动测试
@ComponentScan
public class App {
@SuppressWarnings("resource")
public static void main(String[] args) {
//设置指定配置源,启动Spring Boot
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
context.getBean(UserConfig.class).show();
context.getBean(JdbcConfig.class).show();
context.close();
}
}
6.4、配置源类使用注解指定多个配置文件方式
可以指定多个外部文件
@Configuration
//指定多个配置文件
/*注解方式一
@PropertySource("classpath:jdbc.properties")
@PropertySource("file:/D:/temp/tomcat.properties")
*/
//注解方式二
@PropertySources({@PropertySource("classpath:jdbc.properties"),@PropertySource("file:/D:/temp/tomcat.properties")})
public class FileConfig {
}
@Component//加入容器
public class JdbcConfig {
//获取指定配置文件属性
@Value("${jdbc.url}")
private String url;
//file下的配置文件属性
@Value("${userName}")
private String userName;
//file下的配置文件属性
@Value("${password}")
private String password;
public void show(){
System.out.println("jdbc.url="+url);
System.out.println("userName="+userName);
System.out.println("password="+password);
}
}
6.5、使用注解装配把配置文件属性封装到对象
① 新建配置文件
demo.uname=name
demo.uage=18
demo.usex=man
② 装配配置对象的类
//注入到容器
@Component
//指定前缀
@ConfigurationProperties(prefix="demo")
//指定配置文件
@PropertySource(value="config.properties")
public class DemoBean {
private String uname;
private Integer uage;
private String usex;
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public Integer getUage() {
return uage;
}
public void setUage(Integer uage) {
this.uage = uage;
}
public String getUsex() {
return usex;
}
public void setUsex(String usex) {
this.usex = usex;
}
}
③ 启动测试
注意注解使用 @SpringBootApplication
@SpringBootApplication
public class App {
@SuppressWarnings("resource")
public static void main(String[] args) {
//设置指定配置源,启动Spring Boot
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
context.getBean(UserConfig.class).show();
context.getBean(JdbcConfig.class).show();
DemoBean bean = context.getBean(DemoBean.class);
System.out.println("uname="+bean.getUname()+"----usex="+bean.getUsex());
context.close();
}
}
6.6、yml格式配置使用
a.语法:
k:(空格)v;表示一对键值对,空格必须有。
server:
port: 8989
YML支持三种数据结构 :
- 对象 : 键值对的集合;
- 数组 : 一组按次序排列的值;
- 字面量 : 单个的不可分割的值。
b.获取配置属性
@Component
public class YMLBeanConfig {
//@Value获取属性
@Value("${server.port}")
private Integer port;
@Autowired
private Environment environment;
public void show(){
System.out.println("value:port="+port);
//环境对象根据key获取属性
System.out.println("port="+environment.getProperty("server.port"));
}
}
c.启动测试
@SpringBootApplication
public class App {
@SuppressWarnings("resource")
public static void main(String[] args) {
//设置指定配置源,启动Spring Boot
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
context.getBean(YMLBeanConfig.class).show();
context.close();
}
}