1. @Value
我们可以通过 @Value 注解将配置文件中的值映射到一个 Spring 管理的 Bean 的字段上。
例如:
application.yml 配置如下:
person:
name: zhangsan
age: 18
实体 Bean 代码如下:
@Controller
public class QuickStartController {
@Value("${person.name}")
private String name;
@Value("${person.age}")
private Integer age;
@RequestMapping("/quick")
@ResponseBody public String quick(){
return "springboot 访问成功! name="+name+",age="+age;
}
}
2. @ConfigurationProperties
通过注解 @ConfifigurationProperties(prefifix="配置文件中的key的前缀")
可以将配置文件中的配置自动与实体进行映射。
application.yml 配置如下:
person:
name: zhangsan
age: 18
实体 Bean 代码如下:
@Controller
@ConfigurationProperties(prefix = "person")
public class QuickStartController {
private String name;
private Integer age;
@RequestMapping("/quick")
@ResponseBody public String quick(){
return "springboot 访问成功! name="+name+",age="+age;
}
}
可以通过 @PropertySource(value = “config.properties”) 指定配置文件路径。 支持 propertiew 文件,默认不支持 yml.
若要支持 yml, 参考 @PropertySource加载yml
3. Environment
通过注入 Environment ,读取配置文件
application.yml 配置如下:
person:
name: zhangsan
age: 18
实体 Bean 代码如下:
@Slf4j
@Service
public class TestService {
@Resource
private Environment environment;
public void test() {
System.out.println(environment.getProperty("person.name"));
}
}
4. System Properties
除了读取配置文件外,可以通过 System.getProperty()
读取环境变量
public void test() {
System.out.println(System.getProperty("file.separator"));
Properties properties = System.getProperties();
for (String stringPropertyName : properties.stringPropertyNames()) {
System.out.println(stringPropertyName + "=" + properties.getProperty(stringPropertyName));
}
}