spring boot 读取配置文件

spring boot 读取配置文件有两种方式:

一种是通过@PropertySource注解,然后使用@Value逐个注入配置

package com.cn.core.mail;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
 * 这种方式可以读取配置文件 也可以通过启动脚本 --spring.config.location 引用外部文件进行覆盖
 * @author jianghd
 *
 */
@Configuration
@PropertySource("classpath:mail.properties")
public class ConfigLoader2 {
	
	@Value("${mail.server}")
	private  String server;
	// 发件人邮箱地址
	@Value("${mail.sender}")
	private  String sender;
	// 发件人邮箱用户名
	@Value("${mail.username}")
	private  String username;
	// 发件人邮箱密码
	@Value("${mail.password}")
	private  String password;
	// 发件人显示昵称
	@Value("${mail.nickname}")
	private  String nickname;
	//收件人
	@Value("${mail.receiver}")
	private  String receiver;
	
	
	public String getServer() {
		return server;
	}
	public void setServer(String server) {
		this.server = server;
	}
	public String getSender() {
		return sender;
	}
	public void setSender(String sender) {
		this.sender = sender;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getNickname() {
		return nickname;
	}
	public void setNickname(String nickname) {
		this.nickname = nickname;
	}
	public String getReceiver() {
		return receiver;
	}
	public void setReceiver(String receiver) {
		this.receiver = receiver;
	}
	
	
}

另外一种方式是通过 @ConfigurationProperties 注解,通过getter、setter方法注入及获取配置。

package com.cn.core.mail;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Repository;


/**
 * 这种方式只会读取classpath下的配置文件,
 * @Configuration 配置
 * 
 * @Component 表示带注释的类是“组件”,此类被认为是自动检测,使用基于注释的配置和路径扫描
 *      		其他类级别注释可被视为标识。也可认为是一个组件,通常是一种特殊的组件:
 * 
 * @author jianghd
 *
 */
@Configuration
@ConfigurationProperties(locations="classpath:mail.properties",prefix = "mail")
public class ConfigLoader {
	// 邮件发送SMTP主机
	private  String server;
	// 发件人邮箱地址
	private  String sender;
	// 发件人邮箱用户名
	private  String username;
	// 发件人邮箱密码
	private  String password;
	// 发件人显示昵称
	private  String nickname;
	//收件人
	private  String receiver;
	

	
	public  String getServer() {
		return server;
	}

	public void setServer(String server) {
		this.server = server;
	}

	public void setSender(String sender) {
		this.sender = sender;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public void setNickname(String nickname) {
		this.nickname = nickname;
	}

	public void setReceiver(String receiver) {
		this.receiver = receiver;
	}

	public  String getSender() {
		return sender;
	}

	public  String getUsername() {
		return username;
	}

	public  String getPassword() {
		return password;
	}

	public  String getNickname() {
		return nickname;
	}

	public  String getReceiver() {
		return receiver;
	}

}

配置文件 mail.properties

#mail sender settings
# for example: smtp.sina.cn
mail.server=smtp.126.com
#the sender mail
mail.sender=xxxx@126.com
mail.nickname=qylhjhd
#sender mail username
mail.username=xxxx@126.com
#sender mail password
mail.password=

mail.receiver=xxxx@qq.com

注意:有个小坑

如果定义一个键值对 user.name=xxx ,或者 user=xxx, 这里会读取不到对应写的属性值。为什么呢?Spring Boot 的默认 StandardEnvironment 首先将会加载 “systemEnvironment" 作为首个PropertySource. 而 source 即为System.getProperties().当 getProperty时,按照读取顺序,返回 “systemEnvironment" 的值.即 System.getProperty(" user.name "), linux 系统机子会读当前的用户名。 所以设置配置文件名称的时候需要注意,尽量避免与系统环境变量名称重复

另外spring boot 获取配置属性的优先级:
1.命令行参数
2.java:comp/env 里的 JNDI 属性
3.JVM 系统属性
4.操作系统环境变量
5.RandomValuePropertySource 属性类生成的 random.* 属性
6.应用以外的 application.properties(或 yml)文件
7.打包在应用内的 application.properties(或 yml)文件
8.在应用 @Configuration 配置类中,用 @PropertySource 注解声明的属性文件
9.SpringApplication.setDefaultProperties 声明的默认属性


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值