Spring Boot读取配置的几种方式

读取application文件


在application.yml或者properties文件中添加:

info.address=USA

info.company=Spring

info.degree=high

@Value注解读取方式


import org.springframework.beans.factory.annotation.Value;

import org.springframework.stereotype.Component;


@Component

public class InfoConfig1 {


   @Value("${info.address}")

   private String address;


   @Value("${info.company}")

   private String company;


   @Value("${info.degree}")

   private String degree;


   public String getAddress() {

       return address;

   }


   public void setAddress(String address) {

       this.address = address;

   }


   public String getCompany() {

       return company;

   }


   public void setCompany(String company) {

       this.company = company;

   }


   public String getDegree() {

       return degree;

   }


   public void setDegree(String degree) {

       this.degree = degree;

   }


}

@ConfigurationProperties注解读取方式

@Component

@ConfigurationProperties(prefix = "info")

public class InfoConfig2 {


   private String address;

   private String company;

   private String degree;


   public String getAddress() {

       return address;

   }


   public void setAddress(String address) {

       this.address = address;

   }


   public String getCompany() {

       return company;

   }


   public void setCompany(String company) {

       this.company = company;

   }


   public String getDegree() {

       return degree;

   }


   public void setDegree(String degree) {

       this.degree = degree;

   }


}

 

读取指定文件


资源目录下建立config/db-config.properties:

 
db.username=root

db.password=123456

@PropertySource+@Value注解读取方式

 
@Component

@PropertySource(value = { "config/db-config.properties" })

public class DBConfig1 {


   @Value("${db.username}")

   private String username;


   @Value("${db.password}")

   private String password;


   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;

   }


}

注意:@PropertySource不支持yml文件读取。

 

@PropertySource+@ConfigurationProperties注解读取方式

 
@Component

@ConfigurationProperties(prefix = "db")

@PropertySource(value = { "config/db-config.properties" })

public class DBConfig2 {


   private String username;

   private String password;


   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;

   }


}

 

Environment读取方式


以上所有加载出来的配置都可以通过Environment注入获取到。

 
@Autowired

private Environment env;


// 获取参数

env.getProperty(String key);

还可以在启动类中通过ApplicationContext获取Environment对象后再获取值:

	@SpringBootApplication
	public class AttributeApplication {
	
		private static final String UNDEFINED = "undefined";
		private static final String SPRING_BOOT_HELLO = "spring-boot.hello";
	
	    public static void main(String[] args) {
			ConfigurableApplicationContext applicationContext = SpringApplication.run(AttributeApplication.class, args);
			System.out.println("2-2. 通过ApplicationContext获取Environment后再获取值: " + applicationContext
											.getEnvironment().getProperty(SPRING_BOOT_HELLO, UNDEFINED));
		}
	
	}

还可以在启动类中通过ApplicationContext获取Environment对象后再获取值: 

	@SpringBootApplication
	public class AttributeApplication {
	
		private static final String UNDEFINED = "undefined";
		private static final String SPRING_BOOT_HELLO = "spring-boot.hello";
	
	    public static void main(String[] args) {
			ConfigurableApplicationContext applicationContext = SpringApplication.run(AttributeApplication.class, args);
			System.out.println("2-2. 通过ApplicationContext获取Environment后再获取值: " + applicationContext
											.getEnvironment().getProperty(SPRING_BOOT_HELLO, UNDEFINED));
		}
	
	}

PropertiesLoaderUtils 方式:

	@SpringBootApplication
	public class AttributeApplication {
	
	    private static final String UNDEFINED = "undefined";
	    private static final String APPLICATION_PROPERTIES = "application.properties";
  	 	private static final String SPRING_BOOT_HELLO = "spring-boot.hello";

		/**
		 * 4. 通过PropertiesLoaderUtils获取(注意,此工具类仅可处理.properties或.xml配置文件)
		 */
		public void getAttrByPropertiesLoaderUtils() {
			try {
				ClassPathResource resource = new ClassPathResource(APPLICATION_PROPERTIES);
				Properties properties = PropertiesLoaderUtils.loadProperties(resource);
				String property = properties.getProperty(SPRING_BOOT_HELLO, UNDEFINED);
				System.out.println("4. 通过PropertiesLoaderUtils获取: " + property);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		public static void main(String[] args) {
			ConfigurableApplicationContext applicationContext = SpringApplication.run(AttributeApplication.class, args);
			AttributeApplication bean = applicationContext.getBean(AttributeApplication.class);
			bean.getAttrByPropertiesLoaderUtils();
		}

	}

 

总结


从以上示例来看,Spring Boot可以通过@PropertySource,@Value,@Environment,@ConfigurationProperties来绑定变量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值