spring-boot读取props和yml配置文件

最近微框架spring-boot很火,笔者也跟风学习了一下,废话不多说,现给出一个读取配置文件的例子。 
首先,需要在pom文件中依赖以下jar包

Java代码

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-test</artifactId>
  9. <scope>test</scope>
  10. </dependency>
  11. </dependencies>

其次,我们需要一个spring-boot启动类 下载

Java代码

  1. @SpringBootApplication
  2. @EnableConfigurationProperties({PropsConfig.class,YmlConfig.class})
  3. public class ReadApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(ReadApplication.class, args);
  6. }
  7. }

没错,@EnableConfigurationProperties注解里指出的PropsConfig.class,YmlConfig.class分别就是读取props和yml配置文件的类。接下来,我们分别进行读取properties和yml配置文件的具体实现。

1.读取properties配置文件 
在类路径下放置一个application.properties文件,大致内容如下: 下载

Java代码

  1. master.ds.driverClassName=com.mysql.jdbc.Driver
  2. master.ds.url=jdbc:mysql://localhost:3306/test
  3. master.ds.username=root
  4. master.ds.password=root
  5. master.ds.filters=stat
  6. master.ds.maxActive=20
  7. master.ds.initialSize=1
  8. master.ds.maxWait=60000
  9. master.ds.minIdle=10
  10. master.ds.timeBetweenEvictionRunsMillis=60000
  11. master.ds.minEvictableIdleTimeMillis=300000
  12. master.ds.validationQuery=SELECT ‘x‘
  13. master.ds.testWhileIdle=true
  14. master.ds.testOnBorrow=false
  15. master.ds.testOnReturn=false
  16. master.ds.poolPreparedStatements=true
  17. master.ds.maxOpenPreparedStatements=100
  18. master.ds.removeAbandoned=true
  19. master.ds.removeAbandonedTimeout=1800
  20. master.ds.logAbandoned=true

读取props配置的类,很简单,基本就是一个pojo/vo类,在类上加载@ConfigurationProperties注解即可。

Java代码  下载

  1. @ConfigurationProperties(prefix = "master.ds",locations = "classpath:application.properties")
  2. public class PropsConfig {
  3. private String driverClassName;
  4. private String url;
  5. private String username;
  6. private String password;
  7. private String filters;
  8. private String maxActive;
  9. private String initialSize;
  10. private String maxWait;
  11. public String getDriverClassName() {
  12. return driverClassName;
  13. }
  14. public void setDriverClassName(String driverClassName) {
  15. this.driverClassName = driverClassName;
  16. }
  17. public String getUrl() {
  18. return url;
  19. }
  20. public void setUrl(String url) {
  21. this.url = url;
  22. }
  23. public String getUsername() {
  24. return username;
  25. }
  26. public void setUsername(String username) {
  27. this.username = username;
  28. }
  29. public String getPassword() {
  30. return password;
  31. }
  32. public void setPassword(String password) {
  33. this.password = password;
  34. }
  35. public String getFilters() {
  36. return filters;
  37. }
  38. public void setFilters(String filters) {
  39. this.filters = filters;
  40. }
  41. public String getMaxActive() {
  42. return maxActive;
  43. }
  44. public void setMaxActive(String maxActive) {
  45. this.maxActive = maxActive;
  46. }
  47. public String getInitialSize() {
  48. return initialSize;
  49. }
  50. public void setInitialSize(String initialSize) {
  51. this.initialSize = initialSize;
  52. }
  53. public String getMaxWait() {
  54. return maxWait;
  55. }
  56. public void setMaxWait(String maxWait) {
  57. this.maxWait = maxWait;
  58. }
  59. }

单元测试类

Java代码  下载

  1. @RunWith(SpringJUnit4ClassRunner.class)
  2. @SpringBootTest(classes = ReadApplication.class)
  3. public class ReadApplicationPropsTests {
  4. @Autowired
  5. private PropsConfig propsConfig;
  6. @Test
  7. public void testDisplayPropsValue() {
  8. String driverClassName = propsConfig.getDriverClassName();
  9. String url = propsConfig.getUrl();
  10. String username = propsConfig.getUsername();
  11. String password = propsConfig.getPassword();
  12. String filters = propsConfig.getFilters();
  13. String maxActive = propsConfig.getMaxActive();
  14. String initialSize = propsConfig.getInitialSize();
  15. String maxWait = propsConfig.getMaxWait();
  16. System.out.println("driverClassName -> " + driverClassName);
  17. System.out.println("url -> " + url);
  18. System.out.println("username -> " + username);
  19. System.out.println("password -> " + password);
  20. System.out.println("initialSize -> " + initialSize);
  21. System.out.println("maxWait -> " + maxWait);
  22. }
  23. }

可以看到在控制台输出的测试内容:

Java代码

  1. driverClassName -> com.mysql.jdbc.Driver
  2. url -> jdbc:mysql://localhost:3306/test
  3. username -> root
  4. password -> root
  5. initialSize -> 1
  6. maxWait -> 60000

2.读取yml配置文件 
在类路径下放置一个application.yml文件下载,大致内容如下:

Java代码

  1. myProps: #自定义的属性和值
  2. simpleProp: simplePropValue
  3. arrayProps: 1,2,3,4,5
  4. listProp1:
  5. - name: abc
  6. value: abcValue
  7. - name: efg
  8. value: efgValue
  9. listProp2:
  10. - config2Value1
  11. - config2Vavlue2
  12. mapProps:
  13. key1: value1
  14. key2: value2

读取yml配置文件的类。

Java代码

  1. @ConfigurationProperties(prefix="myProps") //application.yml中的myProps下的属性
  2. public class YmlConfig {
  3. private String simpleProp;
  4. private String[] arrayProps;
  5. private List<Map<String, String>> listProp1 = new ArrayList<>(); //接收prop1里面的属性值
  6. private List<String> listProp2 = new ArrayList<>(); //接收prop2里面的属性值
  7. private Map<String, String> mapProps = new HashMap<>(); //接收prop1里面的属性值
  8. public String getSimpleProp() {
  9. return simpleProp;
  10. }
  11. public void setSimpleProp(String simpleProp) {
  12. this.simpleProp = simpleProp;
  13. }
  14. public List<Map<String, String>> getListProp1() {
  15. return listProp1;
  16. }
  17. public List<String> getListProp2() {
  18. return listProp2;
  19. }
  20. public String[] getArrayProps() {
  21. return arrayProps;
  22. }
  23. public void setArrayProps(String[] arrayProps) {
  24. this.arrayProps = arrayProps;
  25. }
  26. public Map<String, String> getMapProps() {
  27. return mapProps;
  28. }
  29. public void setMapProps(Map<String, String> mapProps) {
  30. this.mapProps = mapProps;
  31. }
  32. }

单元测试类

Java代码  下载

  1. @RunWith(SpringJUnit4ClassRunner.class)
  2. @SpringBootTest(classes = ReadApplication.class)
  3. public class ReadApplicationYmlTests {
  4. @Autowired
  5. private YmlConfig ymlConfig;
  6. @Test
  7. public void testDisplayYmlValue() throws JsonProcessingException {
  8. System.out.println("simpleProp: " + ymlConfig.getSimpleProp());
  9. ObjectMapper objectMapper = new ObjectMapper();
  10. System.out.println("arrayProps: " + objectMapper.writeValueAsString(ymlConfig.getArrayProps()));
  11. System.out.println("listProp1: " + objectMapper.writeValueAsString(ymlConfig.getListProp1()));
  12. System.out.println("listProp2: " + objectMapper.writeValueAsString(ymlConfig.getListProp2()));
  13. System.out.println("mapProps: " + objectMapper.writeValueAsString(ymlConfig.getMapProps()));
  14. }
  15. }

可以看到在控制台输出的测试内容:

Java代码

  1. simpleProp: simplePropValue
  2. arrayProps: ["1","2","3","4","5"]
  3. listProp1: [{"name":"abc","value":"abcValue"},{"name":"efg","value":"efgValue"}]
  4. listProp2: ["config2Value1","config2Vavlue2"]
  5. mapProps: {"key1":"value1","key2":"value2"}
时间: 2024-10-10 05:20:10

spring-boot读取props和yml配置文件的相关文章

spring boot 读取配置文件(application.yml)中的属性值111

在spring boot中,简单几步,读取配置文件(application.yml)中各种不同类型的属性值: 1.引入依赖: [html] view plain copy <!-- 支持 @ConfigurationProperties 注解 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-proc

spring boot 读取自定义properties文件

@Configuration@Componentpublic class PropertiesConfig { private static final String[] properties = {"/application.properties"}; private static Properties props; private static Map<Object, Object> propertiesMap = new HashMap(); public Prope

Spring Boot读取配置的几种方式

读取application文件 在application.yml或者properties文件中添加: info.address=USAinfo.company=Springinfo.degree=high @Value注解读取方式 12345678910111213141516171819202122232425262728293031323334353637383940 import org.springframework.beans.factory.annotation.Value;impo

IDEA开发spring boot应用时 application.yml 或 application.properties 自定义属性提示

在使用spring boot开发过程中,经常会定义一些应用自己的属性,直接写到application配置文件中使用@Value注解进行使用,这样使用也没有什么问题.不过我认为更优雅的方式是定义自己的属性类统一管理,这样在idea中,既能自动提示,又能对配置进行分类管理,显得有条不紊,下面是具体的配置步骤. 第一步:添加依赖(分为maven和gradle两种方式) 1.1 如果你使用的是maven 增加依赖 <dependency> <groupId>org.springframew

spring boot 使用maven打包删除配置文件

spring boot 项目使用maven打包 项目条件: *.properties放在jar包外面使其方便动态实时配置信息 *.properties在jar包内不允许让其存在(实际是config优先于jar包内的配置文件) 动态指定生成环境而配置文件(转微服务架构内设计) 解决办法 项目服务器jar包所在目录下,新建config文件夹,直接nohup启动即可 maven打包剔除*.properties # build下配置 <resources> <resource> <f

【Spring Boot】Spring Boot项目设置多个配置文件,并在生产环境中的Tomcat设置对应的配置文件

1.修改Spring Boot项目配置文件 除了主配置文件,另外创建2个配置文件,注意命名要用application-*.properties 主配置文件中写入,使用dev作为开发配置 spring.profiles.active=dev 2.设置服务器中Tomcat参数,调用生产环境配置 打开Tomcat配置软件 增加配置-Dspring.profiles.active="pro" 重新启动Tomcat即可 原文地址:https://www.cnblogs.com/LiveYourL

spring boot项目mybatis配置注解+配置文件

maven依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId&g

Spring Mvc和Spring Boot读取Profile方式

spring boot java代码中获取spring.profiles.active - u013042707的专栏 - CSDN博客https://blog.csdn.net/u013042707/article/details/80632057 在Java类中取web.xml中配置的profile - mlz_2的专栏 - CSDN博客https://blog.csdn.net/mlz_2/article/details/80607821 原文地址:https://www.cnblogs.

spring boot打包,依赖、配置文件分离,拷贝启动脚本

一.最终打包的目录结构 二.项目结构 三.开始 1.最终打包的目录,可根据自己需要修改. <properties> <mzservice.path>${project.build.directory}/mzservice</mzservice.path> </properties> 2.配置清理插件,每次打包前,清理之前生成的打包目录. <plugin> <artifactId>maven-clean-plugin</artif