配置文件 src/main/resources 目录下: book.properties
yuyi.book.name=三国演义
yuyi.book.count=100
一、使用@Value 注解注入属性
(给静态变量注入需要增加一个非静态的set方法,把@Value注解写到对应的set方法上)
package com.yuyi.bean.model;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* 使用 @Value 注解注入属性值
*/
@Component
public class BookValue {
@Value("${yuyi.book.name}")
private String name;
@Value("${yuyi.book.count}")
private Integer count;
// 静态变量需要把@Value 写到对应的set方法上
//@Value("${yuyi.book.name}")
private static String name2;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
public String getName2() {
return name2;
}
// 静态变量需要把@Value 写到对应的set方法上
@Value("${yuyi.book.name}")
public void setName2(String name2) {
this.name2 = name2;
}
}
二、使用 Environment 获取配置信息
package com.yuyi.bean.model;
import java.io.UnsupportedEncodingException;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
/**
* 使用 Environment 类获取配置信息
*/
@Component
public class BookEnvironment {
@Autowired
private Environment env;
private String name;
private Integer count;
@PostConstruct //注解标注该方法在构造器调用之后自动执行
public void init() throws UnsupportedEncodingException{
String strname = env.getProperty("yuyi.book.name");
String strcount = env.getProperty("yuyi.book.count");
name = strname;
count = Integer.parseInt(strcount);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
}
三、使用 @ConfigurationProperties 注解注入配置信息
package com.yuyi.bean.model;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
/**
* 使用 @ConfigurationProperties注入配置信息
*/
@Component
@ConfigurationProperties(prefix = "yuyi.book")
@PropertySource(value = "classpath:book.properties", encoding = "UTF-8") //配置文件位置, 编码方式
public class BookProperties {
private String name;
private Integer count;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
}