spring boot学习2之properties配置文件读取
来源:互联网 发布:知豆电动汽车四座 编辑:程序博客网 时间:2024/06/06 04:56
在spring boot学习1 时,知道spring boot会默认读取配置application.properties。那如果我们直接在application.properties添加自定义的配置项时,如何读取?或者不想把所有的配置都放在application.properties中,而是自定义一个properties文件时,又该如何读取呢?难道还需自己写代码加载读取配置文件吗?
注:下面代码是在spring boot 1.5.2版本下写的。
pom.xml
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version></parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency></dependencies>
@Value
使用@Value注入写在application.properties中的配置项
application.properties
logging.config=classpath:logback.xmllogging.path=d:/logs##tomcat set###server.port=80#session 超时时间server.session-timeout=60###########hello=hello china!!!class.schoolName=china schoolclass.className=second grade three classclass.students[0].name=tomclass.students[1].name=jack
在代码中@Value注入到属性中
@Controller@RequestMapping("/")public class HelloController {public static Logger LOG = LoggerFactory.getLogger(HelloController.class);@Value("${hello}")private String hello;@Value("${class.schoolName}")private String schoolName;
@ConfigurationProperties
如果想把某种相关的配置,注入到某个配置类中,比如上面的application.properties中看到class.xx的配置项,想注入到ClassConfig配置类中package com.fei.springboot.config;import java.util.ArrayList;import java.util.List;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;@Component("classConfig")@ConfigurationProperties(prefix="class")public class ClassConfig {private String schoolName;private String className;private List<StudentConfig> students = new ArrayList<StudentConfig>();public String getSchoolName() {return schoolName;}public void setSchoolName(String schoolName) {this.schoolName = schoolName;}public void setClassName(String className) {this.className = className;}public void setStudents(List<StudentConfig> students) {this.students = students;}public String getClassName() {return className;}public List<StudentConfig> getStudents() {return students;}}这样就会把application.properties中以class.开头的配置项给注入进来
我们看到代码中@ConfigurationProperties并没有指明properties,那默认的就是application.properties。那是否有地方指明properties的路径呢?在版本1.5.1之前可以@ConfigurationProperties(prefix="class",location="classpath:/customer.properties"),但是1.5.2版本没有location了,需要用@PropertySource("classpath:/student.properties")
package com.fei.springboot.config;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.PropertySource;import org.springframework.stereotype.Component;@Component("studentConfig")@ConfigurationProperties@PropertySource("classpath:/student.properties")public class StudentConfig {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}
测试下
package com.fei.springboot.controller;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import com.fei.springboot.config.ClassConfig;import com.fei.springboot.config.StudentConfig;@Controller@RequestMapping("/")public class HelloController {public static Logger LOG = LoggerFactory.getLogger(HelloController.class);@Value("${hello}")private String hello;@Value("${class.schoolName}")private String schoolName;@Autowiredprivate ClassConfig classConfig;@Autowiredprivate StudentConfig studentConfig;@RequestMapping(value="/hello")@ResponseBodypublic String hello(){System.out.println("=======使用@Value注入获取.....===========");System.out.println("hello="+hello+" schoolName=" + schoolName);System.out.println("======使用@ConfigurationProperties注入获取.....============");System.out.println("schoolName=" + classConfig.getSchoolName());System.out.println("className=" + classConfig.getClassName());System.out.println("student[0].name=" + classConfig.getStudents().get(0).getName());System.out.println("studentConfig...name=" + studentConfig.getName());return "hello";}}打印结果
2017-05-17 15:20:49.677 INFO 72996 --- [p-nio-80-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 19 ms2017-05-17 15:20:49.677 [http-nio-80-exec-1] INFO o.s.web.servlet.DispatcherServlet - FrameworkServlet 'dispatcherServlet': initialization completed in 19 ms=======使用@Value注入获取.....===========hello=hello china!!! schoolName=china school======使用@ConfigurationProperties注入获取.....============schoolName=china schoolclassName=second grade three classstudent[0].name=tomstudentConfig...name=xiao hong
源码下载
阅读全文
1 0
- spring boot学习2之properties配置文件读取
- Spring Boot学习--logback与properties配置文件
- spring boot中properties类读取配置文件的Date
- spring boot默认配置文件application.properties的属性读取
- spring 读取properties配置文件
- Spring读取properties配置文件
- Spring Boot学习笔记----读取配置文件
- Spring boot之读取自定义配置文件
- Spring boot读取配置文件
- spring-boot 配置文件读取
- Spring boot 配置文件读取
- spring boot 读取配置文件
- Spring boot配置文件 application.properties
- Spring boot配置文件 application.properties
- Spring Boot配置文件 application.properties
- [Spring boot]配置文件properties加载
- spring boot配置文件application.properties
- Spring boot配置文件application.properties
- 增强for循环 -- foreach循环
- json格式自动判断工具
- android开启多进程,弥补系统分配给app的内存不足的问题
- delphi 中locate函数的使用方法
- 梯度
- spring boot学习2之properties配置文件读取
- JPEG解码算法流程详解
- 『ORACLE』快速刷新物化视图的方法(11g)
- Qt之数据库编程
- 遭遇战(模拟)
- FTP主动模式和被动模式的区别
- Git简单使用
- LeetCode 149. Max Points on a Line **** 灵活键,查找表
- Data Structures and algorithm analysis—1.2.1&1.2.2&1.2.3 exponents&logarithms&series(数据结构—指数,对数,级数)