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

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

框架属性文件(application.properties)



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

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 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     <modelVersion>4.0.0</modelVersion>
 8
 9     <groupId>org.allen.learn</groupId>
10     <artifactId>springboot_propertiesparam</artifactId>
11     <version>0.0.1-SNAPSHOT</version>
12
13     <packaging>war</packaging>
14
15     <!-- Inherit defaults from Spring Boot -->
16     <parent>
17         <groupId>org.springframework.boot</groupId>
18         <artifactId>spring-boot-starter-parent</artifactId>
19         <version>2.0.4.RELEASE</version>
20     </parent>
21
22     <!-- Add typical dependencies for a web application -->
23     <dependencies>
24         <dependency>
25             <groupId>org.springframework.boot</groupId>
26             <artifactId>spring-boot-starter-web</artifactId>
27         </dependency>
28
29         <dependency>
30             <groupId>org.springframework.boot</groupId>
31             <artifactId>spring-boot-devtools</artifactId>
32             <optional>true</optional>
33         </dependency>
34
35     </dependencies>
36
37 </project>

在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<String, Object> map = new HashMap<String, Object>();
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<String, Object> map = new HashMap<String, Object>();
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<String, Object> map = new HashMap<String, Object>();
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

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

时间: 2024-11-07 02:22:50

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

Spring 获取propertise文件中的值

Spring 获取propertise文件中的值 Spring 获取propertise的方式,除了之前的博文提到的使用@value的注解注入之外,还可以通过编码的方式获取,这里主要说的是要使用EmbeddedValueResolverAware接口的使用. 一.准备propertise文件 在资源文件夹下面建立好要测试需要的app.propertise文件,里面写几条测试数据,本文主要如图数据. 二.准备配置文件 <?xml version="1.0" encoding=&qu

Java实现获取属性文件的参数值

Java实现获取属性文件的参数值 1,属性文件内容(analysis.properties),路径必须在:src根目录下: #client data path analysis.client.data.path = D://analysis/data/ #server data path analysis.server.data.path = /home/iq126/xyzqiq126/file_tang/ 2,获取属性文件的方法: /** * @Title: getPropertiesValu

通过反射获取class文件中的构造方法,运行构造方法

/* * 通过反射获取class文件中的构造方法,运行构造方法 * 运行构造方法,创建对象 * 1.获取class文件对象 * 2.从class文件对象中,获取需要的成员 * * Constructor 描述构造方法对象类 */ 1.person类,用于测试获取无参的构造方法 package cn.itcast.demo1; public class Person { public String name; private int age; /*static{ System.out.printl

使用JavaScript设置、获取父子页面中的值

一:获取父页面中的值 有二种方法windows.open()和windows.showModalDialog() 1.windos.open(URL,name,reatures,replace) 再父页面中 fatherPage.aspx <script type="text/javascript"> function a(){ windows.open("sonPage.aspx") } </script> 在子页面(sonPage.asp

解决jsp获取sesion域中的值之字符串拼接的问题

2015年5月22日 天气阴 问题描述: 后台代码: //caseId为字符串类型 Struts2Utils.getRequest().getSession().setAttribute(caseId + "idPhoto", idPhoto); jsp获取idPhoto获取session域中的值 错误写法: ${param.search_caseId+"idPhoto"} 正确写法一: <c:set var="idPhotoName" v

C++ 获取PE文件自校验值的代码

将写代码过程比较重要的一些代码收藏起来,下边资料是关于C++ 获取PE文件自校验值的代码. #include#include <imagehlp.h>#pragma comment(lib,"imagehlp") { char szFileName[] = "d:\newupdate.exe"; DWORD dwCheckSum1,dwCheckSum2; if (MapFileAndCheckSum(szFileName,&dwCheckSum

spring 通过@Value 获取properties文件中设置了属性 ,与@Value # 和$的区别

spring 获取 properties的值方法 在spring.xml中配置 很奇怪的是,在context-param 加载的spring.xml 不能使用 ${xxx} 必须交给DispatcherServlet 管理的 springMVC.xml才能用? 要交给springMVC的DispatcherServlet去扫描,而不是spring的监听器ContextLoaderListener去扫描,就可以比较方便的使用"${xxx}"去注入. 1.使用 $ 获取属性 @Value(

Spring获取properties文件中的属性

1.前言 本文主要是对这两篇blog的整理,感谢作者的分享 Spring使用程序方式读取properties文件 Spring通过@Value注解注入属性的几种方式 2.配置文件 application.properties socket.time.out=1000 3.使用spring代码直接载入配置文件,获取属性信息 代码如下: Resource resource = new ClassPathResource("/application.properties"); Propert

SpringBoot入门十九,简单文件上传

项目基本配置参考SpringBoot入门一,使用myEclipse新建一个SpringBoot项目,使用myEclipse新建一个SpringBoot项目即可.现在来给项目添加一个MyBatis支持,添加方式非常简单,仅需两步即可,具体内容如下: 1. pom.xml添加以下配置信息 <!-- 文件上传配置开始 --> <!-- 9.引入commons-io依赖 --> <dependency> <groupId>commons-io</groupId