Spring Boot 读取应用配置
Posted nuist__NJUPT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot 读取应用配置相关的知识,希望对你有一定的参考价值。
Spring Boot 读取应用配置
Spring Boot提供了三种方式读取项目application.properties配置文件的内容,这三种方式分别是Eviroment类,@Value注解,@ConfigurationProperties注解。
1-使用Enviroment类读取配置文件的内容。
(1)创建Spring Boot Web应用。
(2)在src/main/resources目录下创建全局配置文件application.properties,并添加如下内容:
test.msg = read config
(3)创建控制器类,在src/main/java目录下创建包com.controller,在该包中创建控制器类,依赖注入Enviroment对象,通过对象的getProperty()方法获取配置文件中内容。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class EnvReaderConfigController {
@Autowired
private Environment env ;
@RequestMapping("/testEnv")
public String testEnv(){
//test.msg为配置文件application.properties中的key
return "方法1 : " + env.getProperty("test.msg") ;
}
}
(4)在com.controller包中创建Spring Boot的启动类。并运行该启动类。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBoot11Application {
public static void main(String[] args) {
SpringApplication.run(SpringBoot11Application.class, args) ;
}
}
(5)在浏览器中通过地址:http://localhost:8080/testEnv测试应用,效果如下:
2-使用@Value注解读取配置文件内容
(1)创建Spring Boot Web应用。
(2)在src/main/resources目录下创建全局配置文件application.properties,并添加如下内容:
test.msg = read config
(3)在com.controller包下创建控制器类。
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ValueReaderConfigController {
@Value("${test.msg}")
private String msg ; //读取配置文件的内容并传递给msg
@RequestMapping("/testValue")
public String testValue(){
return "方法2 : " + msg ;
}
}
(4)在com.controller包中创建Spring Boot的启动类。并运行该启动类。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBoot11Application {
public static void main(String[] args) {
SpringApplication.run(SpringBoot11Application.class, args) ;
}
}
(5)测试应用,在浏览器中通过地址:http://localhost:8080/testValue测试应用,效果如下:
3-使用@ConfigurationProperties读取配置文件内容。
使用该注解首先建立配置文件与对象的映射关系,然后在控制器方法中使用@Autowired注解将对象注入。
(1)创建Spring Boot web项目,并在全局配置文件application.properties中添加如下内容:
obj.name = wangguodong
obj.age = 25
(2)建立配置文件与映射对象的关系,在src/main/java目录下创建com.model包,并在该包中创建实体类StudentProperties,在该类中使用@ConfigurationProperties注解建立配置文件与对象的映射关系。
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component //声明为一个组件,被控制器依赖注入
@ConfigurationProperties(prefix = "obj")
public class StudentProperties {
private String name ;
private int age ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return "name = " + name + " age = " + age ;
}
}
(3)在com.controller包创建控制器类,在该控制器中使用@Autowired注解依赖注入StudentProperties对象,代码如下:
import com.model.StudentProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConfigurationPropertiesController {
@Autowired
StudentProperties studentProperties ;
@RequestMapping("/testConfigurationProperties")
public String testConfigurationProperties(){
return studentProperties.toString() ;
}
}
(4)在com.controller中创建启动类,并指定要扫描的包。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication(scanBasePackages = {"com"})
public class SpringBoot11Application {
public static void main(String[] args) {
SpringApplication.run(SpringBoot11Application.class, args) ;
}
}
(5)运行main方法,启动并测试应用,并在浏览器地址:http://localhost:8080/testConfigurationProperties中访问,效果如下:
4-读取项目的其它配置文件
开发者希望读取项目的其它配置文件,而不是全局配置文件application.properties,可以使用@PropertySource注解找到其它配置文件,然后使用@value注解读取即可。
(1)在src/main/java目录下创建配置文件ok.properties和test.properties,并在两个配置文件中分别添加如下内容:
your.msg = I love you
my.msg = me too
(2)创建控制器类,在该控制类中使用@PropertySource注解找到其它配置文件,然后使用@value注解读取配置文件。
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@PropertySource({"ok.properties", "test.properties"})
public class PropertySourceValueReaderOtherController {
@Value("${your.msg}")
private String yourMsg ;
@Value("${my.msg}")
private String myMsg ;
@RequestMapping("/testProperties")
public String testProperty(){
return "您的信息:" + yourMsg + " 我的信息:" + myMsg ;
}
}
(3)在com.controller中创建启动类,并指定要扫描的包。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication(scanBasePackages = {"com"})
public class SpringBoot11Application {
public static void main(String[] args) {
SpringApplication.run(SpringBoot11Application.class, args) ;
}
}
(4)运行main方法,启动并测试应用,并在浏览器地址:http://localhost:8080//testProperties中访问,效果如下:
以上是关于Spring Boot 读取应用配置的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot:thymeleaf 没有正确渲染片段
spring boot 读取 application.yml 中 List 类型数据