(七)SpringBoot2.0基础篇- application.properties属性文件的解析及获取
注:由于测试代码较多,影响查看效果,所以只放了核心代码,如需查看,请点示例代码
默认访问的属性文件为application.properties文件,可在启动项目参数中指定spring.config.location的参数:
java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties
使用@PropertySource来获取配置文件的中属性值(注意:在使用该注解时,属性文件必须为properties文件,yaml文件不可用):
@Configuration @PropertySource("classpath:/app.properties")public class AppConfig { @Autowired Environment env; @Bean public TestBean testBean() { TestBean testBean = new TestBean(); testBean.setName(env.getProperty("testbean.name")); return testBean; } }
使用@Value注解直接将属性值注入进修饰对对象中:
import org.springframework.stereotype.*;import org.springframework.beans.factory.annotation.*; @Componentpublic class MyBean { @Value("${name}") private String name; // ...}
使用@ConfigurationProperties(prefix="my")将属性值注入进对象,可以注入对象的属性key的对象,也可以注入进List或Set中,但是属性的书写需要有规范:
my.servers0=dev.example.com my.servers1=another.example.com
使用方式
@ConfigurationProperties(prefix="my")public class Config { //set,list不需要Setter方法 private List<String> servers = new ArrayList<String>(); public List<String> getServers() { return this.servers; } }
可以使用yaml文件格式来替换properties,属性获取方式不变(注:yaml文件后缀名为.yml)
使用POJO方式直接将属性注入进实体对象中:
application.yml
acme: remote-address: 192.168.1.1 security: username: admin password: admincss roles: - USER - ADMIN
AcmeProperties.java
package com.example;import java.net.InetAddress;import java.util.ArrayList;import java.util.Collections;import java.util.List;import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties("acme")public class AcmeProperties { private InetAddress remoteAddress; private final Security security = new Security(); public InetAddress getRemoteAddress() { ... } public void setRemoteAddress(InetAddress remoteAddress) { ... } public Security getSecurity() { ... } public static class Security { private String username; private String password; private List<String> roles = new ArrayList<>(Collections.singleton("USER")); public String getUsername() { ... } public void setUsername(String username) { ... } public String getPassword() { ... } public void setPassword(String password) { ... } public List<String> getRoles() { ... } public void setRoles(List<String> roles) { ... } } }
代码示例:https://gitee.com/lfalex/spring-boot-example/tree/dev/spring-boot-properties
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦