189 8069 5689

spring-boot读取props和yml配置文件-创新互联

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

创新互联公司作为成都网站建设公司,专注重庆网站建设公司、网站设计,有关成都定制网页设计方案、改版、费用等问题,行业涉及成都酒店设计等多个领域,已为上千家企业服务,得到了客户的尊重与认可。

Java代码

  1.     

  2.         org.springframework.boot

  3.         spring-boot-starter-web

  4.     

  5.     

  6.         org.springframework.boot

  7.         spring-boot-starter-test

  8.         test

  9.     

其次,我们需要一个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(SpringJUnit4Cla***unner.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> listProp1 = new ArrayList<>(); //接收prop1里面的属性值

  6.     private List listProp2 = new ArrayList<>(); //接收prop2里面的属性值

  7.     private Map 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> getListProp1() {

  15.         return listProp1;

  16.     }

  17.     public List 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 getMapProps() {

  27.         return mapProps;

  28.     }

  29.     public void setMapProps(Map mapProps) {

  30.         this.mapProps = mapProps;

  31.     }

  32. }

单元测试类

Java代码  下载

  1. @RunWith(SpringJUnit4Cla***unner.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"}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页标题:spring-boot读取props和yml配置文件-创新互联
当前路径:http://jkwzsj.com/article/eeeop.html

其他资讯