SpringBoot如何获取application.properties中自定义的值

目录结构:
SpringBoot如何获取application.properties中自定义的值
文章图片

pom文件:

4.0.0 org.springframework.bootspring-boot-starter-parent2.5.4 com.example i18nSpringbootDemo-1 0.0.1-SNAPSHOT i18nSpringbootDemo-1 Demo project for Spring Boot 11 org.springframework.bootspring-boot-starter-web org.springframework.bootspring-boot-starter-testtestorg.springframework.bootspring-boot-configuration-processortrueorg.springframework.bootspring-boot-starter-validation org.springframework.bootspring-boot-maven-plugin war

application.properties:
test.user.id=12#也可以写成 test.user.user-name=zhangsantest.user.userName=zhansan#也可以写成 test.user.user-password=XXXtest.user.userPassword=PWD123#也可以写成 test.user.la-big-decimal=XXXtest.user.laBigDecimal=138.3test.user.maps.key1=V1test.user.maps.key2=123test.user.lists=a12,a13,sdftest.user.department.dep-code=dep001test.user.department.dep-name=depName001

Department类:
package com.example.demo.obj; public class Department { private String depCode; private String depName; /*** @return depCode*/ public String getDepCode() {return depCode; } /*** @param depCode セットする depCode*/ public void setDepCode(String depCode) {this.depCode = depCode; } /*** @return depName*/ public String getDepName() {return depName; } /*** @param depName セットする depName*/ public void setDepName(String depName) {this.depName = depName; } @Override public String toString() {return "Department [depCode=" + depCode + ", depName=" + depName + "]"; } }

User类:
package com.example.demo.obj; import java.math.BigDecimal; import java.util.List; import java.util.Map; import javax.validation.constraints.Email; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import org.springframework.validation.annotation.Validated; /* * 将配置文件的每一个属性值,映射到这个组件中: * ①@ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定; *prefix = "test.user":将配置文件中前缀为test.user下面的所有属性进行一一映射 *只有这个组件是容器中的组件,才能提供@ConfigurationProperties的功能,所以要加@Component * * ②@Value("${key}")从环境变量、配置文件中获取值 * @Value("#{SpEl}")表达式 * * @ConfigurationProperties与@Value的区别: * @ConfigurationProperties支持松散语法,JSR303数据校验,复杂类型封装,不支持SpEL * @Value支持SpEL,不支持松散语法,JSR303数据校验,复杂类型封装 * 如果说,我们在某个业务逻辑中需要获取一下配置文件中的某项值,可以用@Value * 如果说,我们专门编写了一个javaBean去和配置文件进行映射,我们直接使用@ConfigurationProperties */@Component@ConfigurationProperties(prefix = "test.user")@Validatedpublic class User { //@Value("#{10*2}") private Integer id; //@Email userName必须输入邮箱格式的值,要不然报错 //@Value("${test.user.userName}") private String userName; //@Value("${test.user.userPassword}") private String userPassword; //@Value("${test.user.laBigDecimal}") private BigDecimal laBigDecimal; //@Value("${test.user.maps}") X 不行会报错 private Map maps; //@Value("${test.user.lists}") private List lists; //@Value("${test.user.department}") X 不行会报错 private Department department; /*** @return id*/ public Integer getId() {return id; } /*** @param id セットする id*/ public void setId(Integer id) {this.id = id; } /*** @return userName*/ public String getUserName() {return userName; } /*** @param userName セットする userName*/ public void setUserName(String userName) {this.userName = userName; } /*** @return userPassword*/ public String getUserPassword() {return userPassword; } /*** @param userPassword セットする userPassword*/ public void setUserPassword(String userPassword) {this.userPassword = userPassword; } /*** @return laBigDecimal*/ public BigDecimal getLaBigDecimal() {return laBigDecimal; } /*** @param laBigDecimal セットする laBigDecimal*/ public void setLaBigDecimal(BigDecimal laBigDecimal) {this.laBigDecimal = laBigDecimal; } /*** @return maps*/ public Map getMaps() {return maps; } /*** @param maps セットする maps*/ public void setMaps(Map maps) {this.maps = maps; } /*** @return lists*/ public List getLists() {return lists; } /*** @param lists セットする lists*/ public void setLists(List lists) {this.lists = lists; } /*** @return department*/ public Department getDepartment() {return department; } /*** @param department セットする department*/ public void setDepartment(Department department) {this.department = department; } @Override public String toString() {return "User [id=" + id + ", userName=" + userName + ", userPassword=" + userPassword + ", laBigDecimal="+ laBigDecimal + ", maps=" + maps + ", lists=" + lists + ", department=" + department + "]"; } }
【SpringBoot如何获取application.properties中自定义的值】I18nSpringbootDemo1Application类:
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * 应用启动类 * */@SpringBootApplicationpublic class I18nSpringbootDemo1Application { public static void main(String[] args) {SpringApplication.run(I18nSpringbootDemo1Application.class, args); } }

单元测试类I18nSpringbootDemo1ApplicationTests:
package com.example.demo; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import com.example.demo.obj.User; @SpringBootTestclass I18nSpringbootDemo1ApplicationTests { @Autowired User user; @Test void contextLoads() {System.out.println(user.toString()); } }

启动:
SpringBoot如何获取application.properties中自定义的值
文章图片

结果:
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获取自定义值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    推荐阅读