欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

获取properties文件中的值

程序员文章站 2024-03-07 14:40:21
...

开发平台:IntelliJ IDEA 2019.2 x64企业版

框架:Spring Boot 2.0.6.RELEASE

JDK:1.8

项目结构:

获取properties文件中的值

我测试用的是application-test.properties这个文件,因为项目启动时不会自动加载这个文件,所以在启动类里手动加上,代码如下:

@PropertySource(value = "classpath:application-test.properties")// 手动加载文件
@SpringBootApplication
public class TestApplication {
    private static final Logger logger = LoggerFactory.getLogger(TestApplication.class);
    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
        logger.info("========== 测试项目启动成功 ========");
    }
}

测试的文件中内容为:

jason.test.date=2019-10-06
jason.test.address=shanghai哈哈哈
jason.test.person=chengHoll.wang
jason.test.do-what= play games

email.ip=172.0.0.1
aaa@qq.com
email.password=123456
test-platform=qq

项目启动时会加载这个文件,把里面的内容以key-value的形式存进map中。

读取properties文件中值方法很多,这里主要介绍通过注解的方式获取的。

方式一:通过注解@ConfigurationProperties

代码:

@ConfigurationProperties(prefix = "jason.test")
@Component
public class PropertiesValue {
    private String date;
    private String address;
    private String person;
    private String doWhat;

//省略get/set方法,get/set方法是必须有的
}

此注解会自动读取配置文件中以jason.test开头的变量名,也就是key。后面的内容(如:date,address,person,do-what)会自动按照驼峰规则去匹配我们类里面的成员变量。do-what对应daWhat。注意:@Component不能少了。

使用如下:

@RestController
@RequestMapping("/properties")
public class PropertiesController {
    @Autowired
    private PropertiesValue propertiesValue;

    @RequestMapping("/test1")
    public String test1(){
        return propertiesValue.toString();
    }
}

浏览器输出:获取properties文件中的值

方式二:通过注解@Value

此注解比较简单,代码如下:

@Component
public class PropertiesValueNoPrefix {
    @Value("${email.ip}")
    private String ip;

    @Value("${email.account}")
    private String account;

    @Value("${email.password}")
    private String password;

    @Value("${test-platform}")
    private String platform;

// 省略get/set方法,这里get/set方法可以没有,我这里是为了在别的地方可以调用成员变量

}

使用如下:

@RestController
@RequestMapping("/properties")
public class PropertiesController {

    @Autowired
    private PropertiesValueNoPrefix propertiesValueNoPrefix;

    @RequestMapping("/test2")
    public String test2() {
        return propertiesValueNoPrefix.toString();
    }
}

浏览器输出:获取properties文件中的值

也可以直接在需要使用的地方通过这个注解获取值,如下:

@RestController
@RequestMapping("/properties")
public class PropertiesController {
    
    @Value("${email.ip}")
    private String ip;
    @Value("${email.account}")
    private String account;
    @Value("${email.password}")
    private String password;
    @Value("${test-platform}")
    private String platform;

 @RequestMapping("/test3")
    public String test3() {
        return ip + " " + account + " " + password + " " + platform;
    }
}

浏览器输出:获取properties文件中的值

 

 

相关标签: properties