注:由于测试代码较多,影响查看效果,所以只放了核心代码,如需查看,请点示例代码
默认访问的属性文件为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 servers = new ArrayList(); public List 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 roles = new ArrayList(Collections.singleton("USER")); public String getUsername() { ... } public void setUsername(String username) { ... } public String getPassword() { ... } public void setPassword(String password) { ... } public List getRoles() { ... } public void setRoles(List roles) { ... }
}
}
代码示例:https://gitee.com/lfalex/spring-boot-example/tree/dev/spring-boot-properties
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2715/viewspace-2802213/ ,如需转载,请注明出处,否则将追究法律责任。