请选择 进入手机版 | 继续访问电脑版

[java] SpringBoot怎样 获取application.properties中自定义的值

[复制链接]
查看75 | 回复7 | 2021-9-13 02:24:33 | 显示全部楼层 |阅读模式

目次 布局 :

SpringBoot怎样
获取application.properties中自定义的值

pom文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.5.4</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.example</groupId>
  12. <artifactId>i18nSpringbootDemo-1</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>i18nSpringbootDemo-1</name>
  15. <description>Demo project for Spring Boot</description>
  16. <properties>
  17. <java.version>11</java.version>
  18. </properties>
  19. <dependencies>
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-web</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-test</artifactId>
  27. <scope>test</scope>
  28. </dependency>
  29. <!-- 导入配置文件处理器,配置文件进行绑定就会提示 -->
  30. <dependency>
  31. <groupId>org.springframework.boot</groupId>
  32. <artifactId>spring-boot-configuration-processor</artifactId>
  33. <optional>true</optional>
  34. </dependency>
  35. <!--校验依赖-->
  36. <dependency>
  37. <groupId>org.springframework.boot</groupId>
  38. <artifactId>spring-boot-starter-validation</artifactId>
  39. </dependency>
  40. </dependencies>
  41. <build>
  42. <plugins>
  43. <plugin>
  44. <groupId>org.springframework.boot</groupId>
  45. <artifactId>spring-boot-maven-plugin</artifactId>
  46. </plugin>
  47. </plugins>
  48. </build>
  49. <packaging>war</packaging>
  50. </project>
复制代码

 application.properties:

  1. test.user.id=12
  2. #也可以写成 test.user.user-name=zhangsan
  3. test.user.userName=zhansan
  4. #也可以写成 test.user.user-password=XXX
  5. test.user.userPassword=PWD123
  6. #也可以写成 test.user.la-big-decimal=XXX
  7. test.user.laBigDecimal=138.3
  8. test.user.maps.key1=V1
  9. test.user.maps.key2=123
  10. test.user.lists=a12,a13,sdf
  11. test.user.department.dep-code=dep001
  12. test.user.department.dep-name=depName001
复制代码

Department类:

  1. package com.example.demo.obj;
  2. public class Department {
  3. private String depCode;
  4. private String depName;
  5. /**
  6. * @return depCode
  7. */
  8. public String getDepCode() {
  9. return depCode;
  10. }
  11. /**
  12. * @param depCode セットする depCode
  13. */
  14. public void setDepCode(String depCode) {
  15. this.depCode = depCode;
  16. }
  17. /**
  18. * @return depName
  19. */
  20. public String getDepName() {
  21. return depName;
  22. }
  23. /**
  24. * @param depName セットする depName
  25. */
  26. public void setDepName(String depName) {
  27. this.depName = depName;
  28. }
  29. @Override
  30. public String toString() {
  31. return "Department [depCode=" + depCode + ", depName=" + depName + "]";
  32. }
  33. }
复制代码

User类:

  1. package com.example.demo.obj;
  2. import java.math.BigDecimal;
  3. import java.util.List;
  4. import java.util.Map;
  5. import javax.validation.constraints.Email;
  6. import org.springframework.beans.factory.annotation.Value;
  7. import org.springframework.boot.context.properties.ConfigurationProperties;
  8. import org.springframework.stereotype.Component;
  9. import org.springframework.validation.annotation.Validated;
  10. /*
  11. * 将配置文件的每一个属性值,映射到这个组件中:
  12. * ①@ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
  13. * prefix = "test.user":将配置文件中前缀为test.user下面的所有属性进行一一映射
  14. * 只有这个组件是容器中的组件,才能提供@ConfigurationProperties的功能,所以要加@Component
  15. *
  16. * ②@Value("${key}")从环境变量、配置文件中获取值
  17. * @Value("#{SpEl}")表达式
  18. *
  19. * @ConfigurationProperties与@Value的区别:
  20. * @ConfigurationProperties支持松散语法,JSR303数据校验,复杂类型封装,不支持SpEL
  21. * @Value支持SpEL,不支持松散语法,JSR303数据校验,复杂类型封装
  22. * 如果说,我们在某个业务逻辑中需要获取一下配置文件中的某项值,可以用@Value
  23. * 如果说,我们专门编写了一个javaBean去和配置文件进行映射,我们直接使用@ConfigurationProperties
  24. */
  25. @Component
  26. @ConfigurationProperties(prefix = "test.user")
  27. @Validated
  28. public class User {
  29. //@Value("#{10*2}")
  30. private Integer id;
  31. //@Email userName必须输入邮箱格式的值,要不然报错
  32. //@Value("${test.user.userName}")
  33. private String userName;
  34. //@Value("${test.user.userPassword}")
  35. private String userPassword;
  36. //@Value("${test.user.laBigDecimal}")
  37. private BigDecimal laBigDecimal;
  38. //@Value("${test.user.maps}") X 不行会报错
  39. private Map<String, Object> maps;
  40. //@Value("${test.user.lists}")
  41. private List<Object> lists;
  42. //@Value("${test.user.department}") X 不行会报错
  43. private Department department;
  44. /**
  45. * @return id
  46. */
  47. public Integer getId() {
  48. return id;
  49. }
  50. /**
  51. * @param id セットする id
  52. */
  53. public void setId(Integer id) {
  54. this.id = id;
  55. }
  56. /**
  57. * @return userName
  58. */
  59. public String getUserName() {
  60. return userName;
  61. }
  62. /**
  63. * @param userName セットする userName
  64. */
  65. public void setUserName(String userName) {
  66. this.userName = userName;
  67. }
  68. /**
  69. * @return userPassword
  70. */
  71. public String getUserPassword() {
  72. return userPassword;
  73. }
  74. /**
  75. * @param userPassword セットする userPassword
  76. */
  77. public void setUserPassword(String userPassword) {
  78. this.userPassword = userPassword;
  79. }
  80. /**
  81. * @return laBigDecimal
  82. */
  83. public BigDecimal getLaBigDecimal() {
  84. return laBigDecimal;
  85. }
  86. /**
  87. * @param laBigDecimal セットする laBigDecimal
  88. */
  89. public void setLaBigDecimal(BigDecimal laBigDecimal) {
  90. this.laBigDecimal = laBigDecimal;
  91. }
  92. /**
  93. * @return maps
  94. */
  95. public Map<String, Object> getMaps() {
  96. return maps;
  97. }
  98. /**
  99. * @param maps セットする maps
  100. */
  101. public void setMaps(Map<String, Object> maps) {
  102. this.maps = maps;
  103. }
  104. /**
  105. * @return lists
  106. */
  107. public List<Object> getLists() {
  108. return lists;
  109. }
  110. /**
  111. * @param lists セットする lists
  112. */
  113. public void setLists(List<Object> lists) {
  114. this.lists = lists;
  115. }
  116. /**
  117. * @return department
  118. */
  119. public Department getDepartment() {
  120. return department;
  121. }
  122. /**
  123. * @param department セットする department
  124. */
  125. public void setDepartment(Department department) {
  126. this.department = department;
  127. }
  128. @Override
  129. public String toString() {
  130. return "User [id=" + id + ", userName=" + userName + ", userPassword=" + userPassword + ", laBigDecimal="
  131. + laBigDecimal + ", maps=" + maps + ", lists=" + lists + ", department=" + department + "]";
  132. }
  133. }
复制代码

I18nSpringbootDemo1Application类:

  1. package com.example.demo;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. /**
  5. * 应用启动类
  6. *
  7. */
  8. @SpringBootApplication
  9. public class I18nSpringbootDemo1Application {
  10. public static void main(String[] args) {
  11. SpringApplication.run(I18nSpringbootDemo1Application.class, args);
  12. }
  13. }
复制代码

单元测试类I18nSpringbootDemo1ApplicationTests:

  1. package com.example.demo;
  2. import org.junit.jupiter.api.Test;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.boot.test.context.SpringBootTest;
  5. import com.example.demo.obj.User;
  6. @SpringBootTest
  7. class I18nSpringbootDemo1ApplicationTests {
  8. @Autowired
  9. User user;
  10. @Test
  11. void contextLoads() {
  12. System.out.println(user.toString());
  13. }
  14. }
复制代码

 启动:

SpringBoot怎样
获取application.properties中自定义的值

  1. 结果:
  2. User [id=12, userName=zhansan, userPassword=PWD123, laBigDecimal=138.3, maps={key1=V1, key2=123}, lists=[a12, a13, sdf], department=Department [depCode=dep001, depName=depName001]]
复制代码

SpringBoot怎样
获取application.properties中自定义的值

到此这篇关于SpringBoot获取application.properties中的自定义的值的文章就先容 到这了,更多相干 SpringBoot获取自定义值内容请搜刮 脚本之家从前 的文章或继续欣赏 下面的相干 文章渴望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 未注册的粽子邑 | 2021-9-13 04:11:16 | 显示全部楼层
读了admin楼主的帖子,顿时马桶就通了。。。
回复

使用道具 举报

avatar 风残殒落殒d | 2021-9-20 06:35:16 | 显示全部楼层
论坛的人气不行了!
回复

使用道具 举报

avatar 晴空万里659 | 2021-10-4 09:48:15 | 显示全部楼层
admin楼主,我告诉你一个你不知道的的秘密,有一个牛逼的网站,影视频道的网站所有电影和连续剧都可以免费看的。访问地址:http://tv.mxswl.com
回复

使用道具 举报

avatar 波罗密心经 | 2021-10-10 10:44:28 | 显示全部楼层
我就搞不明白了,看帖回帖能死人么,居然只有我这么认真的在回帖!
回复

使用道具 举报

avatar 李凯908 | 2021-10-12 12:37:15 | 显示全部楼层
今天上网不回帖,回帖就回精华帖!
回复

使用道具 举报

灌水不是我的目的!
回复

使用道具 举报

论坛的帖子越来越有深度了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则