springboot入门_获取属性文件中的值

2021-07-03 11:07

阅读:472

标签:内容   apach   frame   jdb   转码   2.0   ret   artifact   return   

在上一篇文章中,记录了用springboot实现输出一个hello world到前台的程序,本文记录学习springboot读取属性文件中配置信息。

框架属性文件(application.properties)

 


 

创建一个springboot项目,并引入相关依赖,POM文件如下:

 1  2  3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 4         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
 5             http://maven.apache.org/xsd/maven-4.0.0.xsd">
 6     
 7     4.0.0 8     
 9     org.allen.learn10     springboot_propertiesparam
11     0.0.1-SNAPSHOT12     
13     war14     
15     
16     17         org.springframework.boot18         spring-boot-starter-parent
19         2.0.4.RELEASE20     21 
22     
23     24         25             org.springframework.boot26             spring-boot-starter-web
27         28         
29         30             org.springframework.boot31             spring-boot-devtools
32             true33         34         
35     36     
37 

在resources路径下创建application.properties文件,并写入我们的属性名称和值,内容如:

allen.properties.type=springboot
allen.properties.title=springboot获取属性文件值

写一个class来接收属性文件中的值,代码如下:

 1 package org.allen.learn.property;
 2 
 3 import org.springframework.boot.context.properties.ConfigurationProperties;
 4 import org.springframework.stereotype.Component;
 5 
 6 @Component
 7 @ConfigurationProperties(prefix="allen.properties")//指定前缀是allen.properties
 8 public class PropertiesConfig {
 9     
10     public String type;
11     
12     public String title;
13 
14     public String getType() {
15         return type;
16     }
17 
18     public void setType(String type) {
19         this.type = type;
20     }
21 
22     public String getTitle() {
23         return title;
24     }
25 
26     public void setTitle(String title) {
27         this.title = title;
28     }
29 
30 }

在controller使用我们上边类中接收到的属性文件中的值,代码:

 1 package org.allen.learn.controller;
 2 
 3 import java.io.UnsupportedEncodingException;
 4 import java.util.HashMap;
 5 import java.util.Map;
 6 
 7 import org.allen.learn.property.PropertiesConfig;
 8 import org.springframework.beans.factory.annotation.Autowired;
 9 import org.springframework.web.bind.annotation.RequestMapping;
10 import org.springframework.web.bind.annotation.RestController;
11 
12 @RestController
13 public class PropertiesController {
14     
15     @Autowired
16     private PropertiesConfig propertiesConfig;
17 
18     @RequestMapping("/c1")
19     public String getProperties1() {
20         Map map = new HashMap();
21         map.put("属性type", propertiesConfig.getType());
22         try {
23             //application.properties 默认编码格式iso-8859-1,此处中文转码
24             map.put("属性title", new String(propertiesConfig.getTitle().getBytes("iso-8859-1"), "utf-8"));
25         } catch (UnsupportedEncodingException e) {
26             e.printStackTrace();
27         }
28         return map.toString();
29     }
30     
31 }

启动项目,在浏览器中请求 http://localhost:8080/c1

技术分享图片

在页面上可以看到我们在属性文件中默认给的值。这种取值方式我们需要创建一个类来关联值,还有一中方法就是使用@Value来获取属性文件中的值,代码:

 1 package org.allen.learn.controller;
 2 
 3 import java.io.UnsupportedEncodingException;
 4 import java.util.HashMap;
 5 import java.util.Map;
 6 
 7 import org.springframework.beans.factory.annotation.Value;
 8 import org.springframework.web.bind.annotation.RequestMapping;
 9 import org.springframework.web.bind.annotation.RestController;
10 
11 @RestController
12 public class ValueController {
13 
14     @Value("${allen.properties.type}")//指定取值属性名
15     private String type;
16     @Value("${allen.properties.title}")
17     private String title;
18     
19     @RequestMapping("/c2")
20     public String getProperties1() {
21         Map map = new HashMap();
22         map.put("value获取属性type", type);
23         try {
24             //application.properties 默认编码格式iso-8859-1,此处中文转码
25             map.put("value获取属性title", new String(title.getBytes("iso-8859-1"), "utf-8"));
26         } catch (UnsupportedEncodingException e) {
27             e.printStackTrace();
28         }
29         return map.toString();
30     }
31     
32 }

启动项目,在浏览器中请求 http://localhost:8080/c2 可以在浏览器中看到

技术分享图片

 

自定义属性文件

 


 

在resources路径下创建一个myjdbc.properties文件,并写入内容,代码如:

myjdbc.username=root
myjdbc.password=123456

编写一个class来接收属性,代码:

 1 package org.allen.learn.property;
 2 
 3 import org.springframework.boot.context.properties.ConfigurationProperties;
 4 import org.springframework.context.annotation.PropertySource;
 5 import org.springframework.stereotype.Component;
 6 
 7 @Component
 8 @PropertySource(value="classpath:myjdbc.properties")//指定自定义属性文件
 9 @ConfigurationProperties(prefix="myjdbc")//前缀
10 public class MyJdbcProperties {
11 
12     private String username;
13     
14     private String password;
15 
16     public String getUsername() {
17         return username;
18     }
19 
20     public void setUsername(String username) {
21         this.username = username;
22     }
23 
24     public String getPassword() {
25         return password;
26     }
27 
28     public void setPassword(String password) {
29         this.password = password;
30     }
31     
32     
33 }

创建一个controller来获取值,代码:

 1 package org.allen.learn.controller;
 2 
 3 import java.util.HashMap;
 4 import java.util.Map;
 5 
 6 import org.allen.learn.property.MyJdbcProperties;
 7 import org.springframework.beans.factory.annotation.Autowired;
 8 import org.springframework.web.bind.annotation.RequestMapping;
 9 import org.springframework.web.bind.annotation.RestController;
10 
11 @RestController
12 public class MyPropertiesController {
13     
14     @Autowired
15     private MyJdbcProperties myJdbcProperties;
16 
17     @RequestMapping("/c3")
18     public String getMyProperties() {
19         Map map = new HashMap();
20         map.put("myUsername", myJdbcProperties.getUsername());
21         map.put("myPassword", myJdbcProperties.getPassword());
22         return map.toString();
23     }
24     
25 }

启动项目,在浏览器中输入请求地址 http://localhost:8080/c3 浏览器中会输出内容:

技术分享图片

 下载源码 https://files.cnblogs.com/files/wlzq/springboot_propertiesparam.zip

springboot入门_获取属性文件中的值

标签:内容   apach   frame   jdb   转码   2.0   ret   artifact   return   

原文地址:https://www.cnblogs.com/wlzq/p/9623039.html


评论


亲,登录后才可以留言!