这篇文章主要讲解了“SpringBoot如何获取application.properties中自定义的值”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot如何获取application.properties中自定义的值”吧!
目录结构:
pom文件:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>i18nSpringbootDemo-1</artifactId> <version>0.0.1-SNAPSHOT</version> <name>i18nSpringbootDemo-1</name> <description>Demo project for Spring Boot</description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- 导入配置文件处理器,配置文件进行绑定就会提示 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <!--校验依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <packaging>war</packaging> </project>
application.properties:
test.user.id=12 #也可以写成 test.user.user-name=zhangsan test.user.userName=zhansan #也可以写成 test.user.user-password=XXX test.user.userPassword=PWD123 #也可以写成 test.user.la-big-decimal=XXX test.user.laBigDecimal=138.3 test.user.maps.key1=V1 test.user.maps.key2=123 test.user.lists=a12,a13,sdf test.user.department.dep-code=dep001 test.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") @Validated public 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<String, Object> maps; //@Value("${test.user.lists}") private List<Object> 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<String, Object> getMaps() { return maps; } /** * @param maps セットする maps */ public void setMaps(Map<String, Object> maps) { this.maps = maps; } /** * @return lists */ public List<Object> getLists() { return lists; } /** * @param lists セットする lists */ public void setLists(List<Object> 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 + "]"; } }
I18nSpringbootDemo1Application类:
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * 应用启动类 * */ @SpringBootApplication public 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; @SpringBootTest class I18nSpringbootDemo1ApplicationTests { @Autowired User user; @Test void contextLoads() { System.out.println(user.toString()); } }
启动:
结果:
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中自定义的值这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。