文档章节

spring-boot读取props和yml配置文件

d
 duosum8605
发布于 2016/10/03 07:05
字数 796
阅读 87
收藏 0

 

最近微框架spring-boot很火,笔者也跟风学习了一下,废话不多说,现给出一个读取配置文件的例子。 
首先,需要在pom文件中依赖以下jar包 

Java代码

  1. <dependencies>  
  2.     <dependency>  
  3.         <groupId>org.springframework.boot</groupId>  
  4.         <artifactId>spring-boot-starter-web</artifactId>  
  5.     </dependency>       
  6.     <dependency>  
  7.         <groupId>org.springframework.boot</groupId>  
  8.         <artifactId>spring-boot-starter-test</artifactId>  
  9.         <scope>test</scope>  
  10.     </dependency>  
  11. </dependencies>  


其次,我们需要一个spring-boot启动类 

Java代码  下载

  1. @SpringBootApplication  
  2. @EnableConfigurationProperties({PropsConfig.class,YmlConfig.class})   
  3. public class ReadApplication {  
  4.     public static void main(String[] args) {  
  5.         SpringApplication.run(ReadApplication.class, args);  
  6.     }  
  7. }  


没错,@EnableConfigurationProperties注解里指出的PropsConfig.class,YmlConfig.class分别就是读取props和yml配置文件的类。接下来,我们分别进行读取properties和yml配置文件的具体实现。 

1.读取properties配置文件 
在类路径下放置一个application.properties文件,大致内容如下: 

Java代码  下载

  1. master.ds.driverClassName=com.mysql.jdbc.Driver  
  2. master.ds.url=jdbc:mysql://localhost:3306/test  
  3. master.ds.username=root  
  4. master.ds.password=root  
  5. master.ds.filters=stat  
  6. master.ds.maxActive=20  
  7. master.ds.initialSize=1  
  8. master.ds.maxWait=60000  
  9. master.ds.minIdle=10  
  10. master.ds.timeBetweenEvictionRunsMillis=60000  
  11. master.ds.minEvictableIdleTimeMillis=300000  
  12. master.ds.validationQuery=SELECT 'x'  
  13. master.ds.testWhileIdle=true  
  14. master.ds.testOnBorrow=false  
  15. master.ds.testOnReturn=false  
  16. master.ds.poolPreparedStatements=true  
  17. master.ds.maxOpenPreparedStatements=100  
  18. master.ds.removeAbandoned=true  
  19. master.ds.removeAbandonedTimeout=1800  
  20. master.ds.logAbandoned=true  


读取props配置的类,很简单,基本就是一个pojo/vo类,在类上加载@ConfigurationProperties注解即可。 

Java代码

  1. @ConfigurationProperties(prefix = "master.ds",locations = "classpath:application.properties")  
  2. public class PropsConfig {  
  3.     private String driverClassName;  
  4.     private String url;  
  5.     private String username;  
  6.     private String password;  
  7.     private String filters;  
  8.     private String maxActive;  
  9.     private String initialSize;  
  10.     private String maxWait;  
  11.           
  12.     public String getDriverClassName() {  
  13.         return driverClassName;  
  14.     }  
  15.     public void setDriverClassName(String driverClassName) {  
  16.         this.driverClassName = driverClassName;  
  17.     }  
  18.     public String getUrl() {  
  19.         return url;  
  20.     }  
  21.     public void setUrl(String url) {  
  22.         this.url = url;  
  23.     }  
  24.     public String getUsername() {  
  25.         return username;  
  26.     }  
  27.     public void setUsername(String username) {  
  28.         this.username = username;  
  29.     }  
  30.     public String getPassword() {  
  31.         return password;  
  32.     }  
  33.     public void setPassword(String password) {  
  34.         this.password = password;  
  35.     }  
  36.     public String getFilters() {  
  37.         return filters;  
  38.     }  
  39.     public void setFilters(String filters) {  
  40.         this.filters = filters;  
  41.     }  
  42.     public String getMaxActive() {  
  43.         return maxActive;  
  44.     }  
  45.     public void setMaxActive(String maxActive) {  
  46.         this.maxActive = maxActive;  
  47.     }  
  48.     public String getInitialSize() {  
  49.         return initialSize;  
  50.     }  
  51.     public void setInitialSize(String initialSize) {  
  52.         this.initialSize = initialSize;  
  53.     }  
  54.     public String getMaxWait() {  
  55.         return maxWait;  
  56.     }  
  57.     public void setMaxWait(String maxWait) {  
  58.         this.maxWait = maxWait;  
  59.     }  
  60. }  



单元测试类 

Java代码  下载

  1. @RunWith(SpringJUnit4ClassRunner.class)  
  2. @SpringBootTest(classes = ReadApplication.class)  
  3. public class ReadApplicationPropsTests {  
  4.     @Autowired  
  5.     private PropsConfig propsConfig;  
  6.       
  7.     @Test  
  8.     public void testDisplayPropsValue() {  
  9.         String driverClassName = propsConfig.getDriverClassName();  
  10.         String url = propsConfig.getUrl();  
  11.         String username = propsConfig.getUsername();  
  12.         String password = propsConfig.getPassword();  
  13.           
  14.         String filters = propsConfig.getFilters();  
  15.         String maxActive = propsConfig.getMaxActive();  
  16.         String initialSize = propsConfig.getInitialSize();  
  17.         String maxWait = propsConfig.getMaxWait();  
  18.                   
  19.         System.out.println("driverClassName -> " + driverClassName);  
  20.         System.out.println("url -> " + url);  
  21.         System.out.println("username -> " + username);  
  22.         System.out.println("password -> " + password);  
  23.           
  24.         System.out.println("initialSize -> " + initialSize);  
  25.         System.out.println("maxWait -> " + maxWait);  
  26.           
  27.     }  
  28. }  


可以看到在控制台输出的测试内容: 

Java代码  下载

  1. driverClassName -> com.mysql.jdbc.Driver  
  2. url -> jdbc:mysql://localhost:3306/test  
  3. username -> root  
  4. password -> root  
  5. initialSize -> 1  
  6. maxWait -> 60000  



2.读取yml配置文件 
在类路径下放置一个application.yml文件,大致内容如下: 

Java代码

  1. myProps: #自定义的属性和值  
  2.   simpleProp: simplePropValue  
  3.   arrayProps: 1,2,3,4,5  
  4.   listProp1:  
  5.     - name: abc  
  6.       value: abcValue  
  7.     - name: efg  
  8.       value: efgValue  
  9.   listProp2:  
  10.     - config2Value1  
  11.     - config2Vavlue2  
  12.   mapProps:  
  13.     key1: value1  
  14.     key2: value2  



读取yml配置文件的类。 

Java代码  下载

  1. @ConfigurationProperties(prefix="myProps"//application.yml中的myProps下的属性    
  2. public class YmlConfig {  
  3.     private String simpleProp;    
  4.     private String[] arrayProps;    
  5.     private List<Map<String, String>> listProp1 = new ArrayList<>(); //接收prop1里面的属性值    
  6.     private List<String> listProp2 = new ArrayList<>(); //接收prop2里面的属性值    
  7.     private Map<String, String> mapProps = new HashMap<>(); //接收prop1里面的属性值    
  8.         
  9.     public String getSimpleProp() {    
  10.         return simpleProp;    
  11.     }    
  12.         
  13.     public void setSimpleProp(String simpleProp) {    
  14.         this.simpleProp = simpleProp;    
  15.     }    
  16.         
  17.     public List<Map<String, String>> getListProp1() {    
  18.         return listProp1;    
  19.     }    
  20.     public List<String> getListProp2() {    
  21.         return listProp2;    
  22.     }    
  23.     
  24.     public String[] getArrayProps() {    
  25.         return arrayProps;    
  26.     }    
  27.     
  28.     public void setArrayProps(String[] arrayProps) {    
  29.         this.arrayProps = arrayProps;    
  30.     }    
  31.     
  32.     public Map<String, String> getMapProps() {    
  33.         return mapProps;    
  34.     }    
  35.     
  36.     public void setMapProps(Map<String, String> mapProps) {    
  37.         this.mapProps = mapProps;    
  38.     }   
  39. }  



单元测试类 

Java代码

  1. @RunWith(SpringJUnit4ClassRunner.class)  
  2. @SpringBootTest(classes = ReadApplication.class)  
  3. public class ReadApplicationYmlTests {  
  4.     @Autowired  
  5.     private YmlConfig ymlConfig;  
  6.       
  7.     @Test  
  8.     public void testDisplayYmlValue() throws JsonProcessingException {  
  9.         System.out.println("simpleProp: " + ymlConfig.getSimpleProp());    
  10.           
  11.         ObjectMapper objectMapper = new ObjectMapper();  
  12.         System.out.println("arrayProps: " + objectMapper.writeValueAsString(ymlConfig.getArrayProps()));    
  13.         System.out.println("listProp1: " + objectMapper.writeValueAsString(ymlConfig.getListProp1()));    
  14.         System.out.println("listProp2: " + objectMapper.writeValueAsString(ymlConfig.getListProp2()));    
  15.         System.out.println("mapProps: " + objectMapper.writeValueAsString(ymlConfig.getMapProps()));    
  16.   
  17.     }  
  18. }  



可以看到在控制台输出的测试内容: 

Java代码

 收藏代码

  1. simpleProp: simplePropValue  
  2. arrayProps: ["1","2","3","4","5"]  
  3. listProp1: [{"name":"abc","value":"abcValue"},{"name":"efg","value":"efgValue"}]  
  4. listProp2: ["config2Value1","config2Vavlue2"]  
  5. mapProps: {"key1":"value1","key2":"value2"}  

© 著作权归作者所有

共有 人打赏支持
d
粉丝 0
博文 2
码字总数 2563
作品 0
济南
spring-boot读取props和yml配置文件

最近微框架spring-boot很火,笔者也跟风学习了一下,废话不多说,现给出一个读取配置文件的例子。 首先,需要在pom文件中依赖以下jar包 其次,我们需要一个spring-boot启动类 没错,@Enable...

gaolu
2016/09/30
3.5K
3
Spring Cloud(二):Spring Cloud Config

因为涉及到多个子工程,这种情况比较适合gradle担当构建工具。 配置build.gradle setting.gradle 创建子工程 然后在在根项目创建子项目目录cloud 以及类路径目录 mkdir p src/main/{java,res...

神易风
08/08
0
0
springboot动态设置spingsession过期时间

spring boot配置spring session过期时间通过注解@EnableRedisHttpSesssion中的参数maxInactiveIntervalInSeconds来设置,我想通过读取yml配置文件来读取maxInactiveIntervalInSeconds参数的值...

会走路的三百块
08/02
0
0
Spring Boot核心配置

启动类 在包根目录下添加启动类,必须包含main方法,再添加Spring Boot启动方法: 或者流式API 下面是一个典型的Spring Boot工程包布局,Application启动类位于根目录下 核心注解 启动类上面...

Java技术栈
06/10
0
0
Spring Boot - Profile配置

Profile是什么 Profile我也找不出合适的中文来定义,简单来说,Profile就是Spring Boot可以对不同环境或者指令来读取不同的配置文件。 Profile使用 假如有开发、测试、生产三个不同的环境,需...

Java技术栈
06/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL autocommit探究

-- sessionA:tx_isolation=REPEATABLE-READmysql> select connection_id();+-----------------+| connection_id() |+-----------------+| 28 |+-----------------+......

安小乐
5分钟前
4
0
c++多线程锁 Mutex  自动判断死锁

c++多线程锁可以使用absl::Mutex std::mutex这两种,下面是demo代码。 使用absl:Mutex的时候打印: [mutex.cc : 1338] RAW: Cycle: [mutex.cc : 1352] RAW: mutex@0x683b68 stack: @ 0x43856......

青黑
24分钟前
1
0
Blockathon2018(成都站)比赛落幕,留给我们这些区块链应用思考

9月14日,HiBlock区块链社区主办的第二届Blockathon在成都菁融国际广场成功举行,30名参赛者分为5支队伍在48小时内完成区块链项目的创意、开发及路演,经过紧张的开发及现场评选,最终币托(...

HiBlock
29分钟前
0
0
71.告警系统主脚本 配置文件 监控项目

20.20 告警系统主脚本(main.sh) 20.21 告警系统配置文件 20.22 告警系统监控项目 20.20 告警系统主脚本(main.sh): ~1.约定:把以后所有的shell脚本放在/usr/local/sbin下,也方便我们查...

王鑫linux
36分钟前
0
0
装饰者模式

装饰者模式 Q:何为装饰模式? ()地给一个对象添加一些额外的(),并且()时,并不影响原对象。扩展功能来说,装饰器模式相比生成子类更为灵活。 Q:使用场景? 1.想要在不影响其他对象的情况下...

阿元
56分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部