三种方式读取:
(一)
通过springboot带有的Environment 类读取
(二)
通过使用@Value读取
(三)
通过添加一个配置类,使用@ConfigurationProperties读取
使用步骤:
① 添加一个配置类,在类名上面使用@ConfigurationProperties;若读取的配置文件不是默认的application.properties,则需再添加@PropertySource(“xxx.properties”)注解
② 在引导类上面添加;@EnableConfigurationProperties(value=类名.class)
③ 使用;在需要的地方使用@Autowired注入该对象即可
代码:
引导类:
@SpringBootApplication
//方式三需要添加该注解
@EnableConfigurationProperties(MyProperties.class)
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
测试类:
@RestController
public class DemoController {
@Autowired
private Environment environment;
@Value("${spring}")
private Integer password;
@Value("${spring.activemq.user}")
private String userName;
@Autowired
private MyProperties myProperties;
@RequestMapping("/test")
public String demo() {
// 方式一
System.out.println("方式一---------"+environment.getProperty("spring.env.pass"));
System.out.println("方式一--------"+environment.getProperty("spring.env.user"));
//方式二
System.out.println("方式二---------"+password);
System.out.println("方式二---------"+userName);
//方式三
System.out.println("方式三---------"+myProperties.getSex());
System.out.println("方式三---------"+myProperties.getUrl());
return "successful";
}
}
方式三的配置类:
/**
* @ConfigurationProperties 获取application.properties文件中配置项值
* prefix表示配置文件中的配置项前缀
* ignoreUnknownFields表示是否忽略在文件中但是本类又没有属性对应的情况
*
* @PropertySource 获取配置文件名 如果是默认配置文件application.properties或application.yml,则可以省略该注解
*/
@Component
@ConfigurationProperties(prefix="spring.my",ignoreUnknownFields=true)
@PropertySource("app.properties")
public class MyProperties {
private String url;
private String sex;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
配置文件:
默认的application.properties
spring.env.pass=88888
spring.env.user=jack
spring=12356
spring.activemq.user=zeng11
自定义的配置文件app.properties:
spring.my.url=www.baidu.com
spring.my.sex=male
pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.17.RELEASE</version>
</parent>
<groupId>com.abc.springboot</groupId>
<artifactId>spring-boot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 支持热部署(快速重启) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!-- 不向下传递依赖 -->
<optional>true</optional>
</dependency>
</dependencies>
</project>
附代码目录结构:
注意:引导类Application,一定要放在代码的最外层,否则会报错:
控制台最后结果: