1、使用@Value注解读取
读取properties配置文件时,默认读取的是application.properties。
application.properties:
datou.name=datou
datou.age=12
java代码
@RestController
public class DemoController {
@Value("${demo.name}")
private String name;
@Value("${demo.age}")
private int age;
@GetMapping(value = "v")
public String getName(){
return "name:"+name+" ,"+"age:"+age;
}
}
运行结果如下
图片.png
部分放到一个单独的类A中进行读取,然后在类B中调用,则要把类A增加@Component注解,并在类B中使用@Autowired自动装配类A,代码如下。
类A:
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Data
@Component
public class Datou {
@Value("${datou.name}")
private String name;
@Value("${datou.age}")
private Integer age;
}
类B
@RestController
public class DemoController {
@Autowired
Datou datou;
@Autowired
Environment environment;
@GetMapping(value = "datou")
public String getDatou(){
return "name:"+datou.getName()+","+"age:"+datou.getAge();
;
}
}
运行结果如下:
图片.png
2、使用Environment读取
application.properties:
demo.sex=男
demo.city=北京
java代码
@RestController
public class DemoController {
@Autowired
Datou datou;
@Autowired
Environment environment;
@GetMapping(value = "datou")
public String getDatou(){
return //"name:"+datou.getName()+","+"age:"+datou.getAge();
"\n\n\n"+"sex"+environment.getProperty("demo.sex")+" "+"city:"+environment.getProperty("demo.city");
}
}
运行结果如下
图片.png
3、使用@ConfigurationProperties注解读取
在实际项目中,当项目需要注入的变量值很多时,上述所述的两种方法工作量会变得比较大,这时候我们通常使用基于类型安全的配置方式,将properties属性和一个Bean关联在一起,即使用注解@ConfigurationProperties读取配置文件数据。
在src\main\resources下新建config.properties配置文件:
demo.phone=10086
demo.wife=self
创建ConfigBeanProp并注入config.properties中的值
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "demo")
@PropertySource(value ="config.properties")
public class ConfigBeanProp {
private String phone;
private String wife;
}
@Component 表示将该类标识为Bean
@ConfigurationProperties(prefix = "demo")用于绑定属性,其中prefix表示所绑定的属性的前缀。
@PropertySource(value = "config.properties")表示配置文件路径。
使用时,先使用@Autowired自动装载ConfigBeanProp,然后再进行取值,示例如下:
@RestController
public class DemoController {
@Autowired
ConfigBeanProp configBeanProp;
@GetMapping("way")
public String getWay(){
return "phone:"+configBeanProp.getPhone()+","+configBeanProp.getWife();
}
}
运行结果如下:
参考:https://blog.csdn.net/dkbnull/article/details/81953190
网友评论