赞
踩
目前知道的获取配置文件中的值的注解有2个@ConfigurationProperties和@Value
出自springboot
主要用在类上边
可以用来获取配置文件中集合的值
可以配合@Configuration来实现读取配置文件参数并在项目启动过程中加载进Bean实例中。如当使用Springboot+shiro时,shiro框架有一些Bean是在项目启动时实例化的,且带有可配置的参数,这时候就可使用上边的方法实现即创建Bean实例又注入配置文件的配置参数。
@Configuration出自spring,具体用法可以在网上找找。
出自spring
主要用在属性上边
不可以用来获取配置文件中集合的值
my:
servers:
- dev.bar.com
- foo.bar.com
port: 8080
name: lilei
name: hanmeimei
创建一个Protest.java的类用来封装配置文件的参数
- package com.example.springboot.common;
-
- import java.util.ArrayList;
- import java.util.List;
-
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.stereotype.Component;
-
- @Component
- @ConfigurationProperties(prefix = "my")
- public class Protest {
- //因为配置文件中有2个名字为name的配置,此处的name就是my.name,值为lilei
- //如果此处加上@Value("${name}")会被忽略,优先使用的还是my.name的值
- private String name;
-
- private String port;
-
- private List<String> servers = new ArrayList<String>();
-
- //因为配置文件中有2个名字为name的配置,此处的name会获取配置文件中的第二个name,值为hanmeimei
- @Value("${name}")
- private String otherName;
-
- //因为@ConfigurationProperties使用了(prefix = "my")所以当不使用@Value("${env}")是获取不了配置文件env的值的
- @Value("${env}")
- private String env;
-
- public Protest() {
- //此处可在项目启动过程中打印在控制台
- System.out.println("开始构造Protest的实例");
- }
-
- public String getName() {
- System.out.println("正在获取name的值");
- return name;
- }
-
- public void setName(String name) {
- System.out.println("正在设置name的值");
- this.name = name;
- }
-
- public String getPort() {
- return port;
- }
-
- public void setPort(String port) {
- this.port = port;
- }
-
- public List<String> getServers() {
- return servers;
- }
-
- public void setServers(List<String> servers) {
- this.servers = servers;
- }
-
- public String getOtherName() {
- return otherName;
- }
-
- public void setOtherName(String otherName) {
- this.otherName = otherName;
- }
-
- public String getEnv() {
- return env;
- }
-
- public void setEnv(String env) {
- this.env = env;
- }
-
- }
创建一个Controller来测试下,看看输出结果:
- package com.example.springboot.controller;
-
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
-
- import com.example.springboot.common.Protest;
-
- @RestController
- public class HelloController {
-
- @Autowired
- private Protest pt;
-
- @RequestMapping("/")
- public String helloTest() {
- System.out.println(pt.getName());
- System.out.println(pt.getPort());
- System.out.println(pt.getServers().size());
- System.out.println(pt.getOtherName());
- System.out.println(pt.getEnv());
- return "hello world";
- }
- }
最终控制台输出:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。