Spring Boot 原理分析篇二 (配置分析 一)

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();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值