如果您认为对你有帮助,请点个赞!
概述
在WEB开发中,经常需要读取配置文件( 如.properties文件 )。
使用spring boot,读取配置文件将变得非常方便。下面我们直接进入实战。
准备工作
本示例需要使用之前创建的 HelloWorld项目。
如果有开发环境,未创建HelloWorld项目,请参考 创建HelloWorld
如果没有开发环境,请直接参考 环境搭建及HelloWorld
下面进入实战环节。
实战
准备属性配置文件
缺省情况下,spring boot 使用 application.properties文件作为属性配置文件。
我们先在该文件中添加两个自定义的属性,代码如下:
# application.properties 这是默认的属性文件
# 自定义属性
my.property1=value1
my.property2=value2
读取属性(方法1:使用@Value直接读取属性)
新建ConfigController.java中,添加读取属性的代码,如下所示:
//ConfigController.java
package com.example.helloworld;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConfigController{
@Value("${my.property1}")
private String property1;
@Value("${my.property2}")
private String property2;
@RequestMapping("/get/property") //url
public String getProperty() { // 使用@Value注解,读取属性值
return "property1="+property1 + " property2=" +property2;
}
}
运行项目,访问 http://localhost:8080/get/property
运行结果如下,可以看到属性的值已经读取出来了。是不是感觉很爽,原来可以这么简单。
property1=value1 property2=value2
读取属性(方法2:使用@Autowired注解,将配置文件读取到Bean类)
新建一个类ConfigBean.java,该类定义了需要从属性文件中获取的属定,具体代码如下:
//ConfigBean.java
package com.example.helloworld;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class ConfigBean { // 该类需要用 Component进行注解
@Value("${my.property1}")
private String myproperty1; // 使用@Value注解,读取属性值
@Value("${my.property2}")
private String myproperty2; // 使用@Value注解,读取属性值
public String getMyproperty1() {
return myproperty1;
}
public void setMyproperty1(String myproperty1) {
this.myproperty1 = myproperty1;
}
public String getMyproperty2() {
return myproperty2;
}
public void setMyproperty2(String myproperty2) {
this.myproperty2 = myproperty2;
}
}
在ConfigController.java中,添加读取属性的代码,如下所示:
//ConfigController.java
import org.springframework.beans.factory.annotation.Autowired;
//ConfigController.java
@Autowired
private ConfigBean config; //使用@Autowired注解,创建ConfigBean对象实例,以读取配置文件。
//注意:如果使用new是不会自动读取属性文件的,必须用@Autowired注解
@RequestMapping("/get/config") //url
public ConfigBean getConfig() { //直接返回ConfigBean 对象
return config;
}
运行项目,访问 http://localhost:8080/get/config
运行结果如下,可以看到属性的值已经读取出来了:
{"myproperty1":"value1","myproperty2":"value2"}
读取属性(方法3:使用Environment读取)
在ConfigController.java中,添加读取属性的代码,如下所示:
//ConfigController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
@Autowired
private Environment environment; //使用@Autowired读取配置文件到Environment 对象实例中
@RequestMapping("/get/env") //url
public String getEnv() {
String property1=environment.getProperty("my.property1"); //获取属性
String property2=environment.getProperty("my.property2"); //获取属性
return "property1="+property1 + " property2=" +property2;
}
运行项目,访问 http://localhost:8080/get/env
运行结果如下
property1=value1 property2=value2
小结:
可以看到使用Spring Boot读取 配置文件是多么的简单。
这实际上是使用了约定优于配置的思想(maven也是基于这一思想)。即缺省使用application.properties文件进行属性的配置。
当然spring boot 也是可以使用自定义的配置文件。本文暂不讲解,可以自行百度 ** @ConfigurationProperties注解**
参考资料
要深入理解spring boot的原理,建议复习下《JAVA编程语言 》中的如下内容
- 反射
- 注解
如果对您有帮助,请点赞!
网友评论