SpringBoot-属性文件properties形式

上述使用JavaBean的配置可以实现数据源的配置,但是如果配置文件中的内容需要被多次调用就没那么方便了,所以我们学习新的方法,将Properties文件中的公用属性映射到类中的属性

SpringBoot中使用Java方式配置步骤如下:

  1. 创建一个名为application.properties <必须>的文件

  2. 将jdbc.properties中的内容放入application.properties 中

  3. 创建一个Java类例如JDBCProperties,加入@ConfigurationProperties注解(此注解拥有一个prefix属性,可以指定前缀)

  4. 在此类中声明的属性必须和Properties文件中的属性名一致(如果有前缀则为前缀点后的属性名)

  5. 此类需要提供getter、setter方法用于注入属性,可以使用lombok

  6. 在其他类中就可以直接使用此类中的属性了

packagecn.rayfoo.config;

importlombok.Data;
importorg.springframework.boot.context.properties.ConfigurationProperties;

/**
* @author 张瑞丰
* @description
* @date 2019/11/4
*/
@ConfigurationProperties(prefix="jdbc")
@Data
publicclassJDBCProperties{

   privateStringurl;

   privateStringdriver;

   privateStringusername;

   privateStringpassword;

}

优化Java配置代码

在上一篇文章中,我们介绍了JavaBean配置的方法,这里我们优化一下其代码

  1. 去掉@PropertiesSource注解

  2. 新增@EnableConfigurationProperties注解,在其属性中指定JDBCProperties的字节码

  3. 去掉此类中的四个属性

  4. 使用@Autowired注解注入JDBCProperties类

  5. 在数据源中使用jdbcProperties类实例的getter方法

packagecn.rayfoo.config;

importcom.alibaba.druid.pool.DruidDataSource;
importlombok.Data;
importlombok.ToString;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.beans.factory.annotation.Value;
importorg.springframework.boot.context.properties.EnableConfigurationProperties;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.context.annotation.PropertySource;

importjavax.sql.DataSource;

/**
* @author 张瑞丰
* @description
* @date 2019/11/4
*/
@Configuration
@EnableConfigurationProperties(JDBCProperties.class)
publicclassJDBCConfig{

   @Autowired
   privateJDBCPropertiesjdbcProperties;

   @Bean
   publicDataSourcedataSource(){
       DruidDataSourcedruidDataSource=newDruidDataSource();
       druidDataSource.setUsername(jdbcProperties.getUsername());
       druidDataSource.setPassword(jdbcProperties.getPassword());
       druidDataSource.setUrl(jdbcProperties.getUrl());
       druidDataSource.setDriverClassName(jdbcProperties.getDriver());
       returndruidDataSource;
  }
}

如果不适用注入的方式还可以将公用类JDBCProperties作为dataSource方法的参数,SpringBoot会自动将bean对象注入该参数

packagecn.rayfoo.config;

importcom.alibaba.druid.pool.DruidDataSource;
importlombok.Data;
importlombok.ToString;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.beans.factory.annotation.Value;
importorg.springframework.boot.context.properties.EnableConfigurationProperties;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.context.annotation.PropertySource;

importjavax.sql.DataSource;

/**
* @author 张瑞丰
* @description
* @date 2019/11/4
*/
@Configuration
@EnableConfigurationProperties(JDBCProperties.class)
publicclassJDBCConfig{

   @Bean
   publicDataSourcedataSource(JDBCPropertiesjdbcProperties){
       DruidDataSourcedruidDataSource=newDruidDataSource();
       druidDataSource.setUsername(jdbcProperties.getUsername());
       druidDataSource.setPassword(jdbcProperties.getPassword());
       druidDataSource.setUrl(jdbcProperties.getUrl());
       druidDataSource.setDriverClassName(jdbcProperties.getDriver());
       returndruidDataSource;
  }
}

最新文章

  1. [DUBBO]Dubbo控制台查看方法
  2. java学习笔记(1)
  3. SQL_函数
  4. Saltstack数据系统Grains和Pillar(三)
  5. Excel数据挖掘插件
  6. asp.net GDI+绘制折线
  7. ThinkPHP访问不存在的模块跳到404页面
  8. Spark installation for windows
  9. HW6.15
  10. javascript将form表单中的元素值封装成json格式
  11. SIEM
  12. easy_install django==1.4.2_百度搜索
  13. Android 树形菜单
  14. Flexslider图片轮播、文字图片相结合滑动切换效果
  15. leetcode--014 Gas station
  16. 数据结构-单向链表 C和C++的实现
  17. 【Tools】ubuntu16.04升级Python2.7到3.5
  18. OpenMP并行程序设计——for循环并行化详解
  19. linux----------fedora 27 如何打开ssh,可以远程链接
  20. Django进阶之CSRF

热门文章

  1. HTTP协议中常用相应的状态码总结
  2. 3_03_MSSQL课程_Ado.Net_登录复习和ExcuteScalar
  3. 学习笔记(11)- 文本生成RNNLG
  4. 第1节 Scala基础语法:3、环境;4、插件
  5. webpack配置文件里loader的执行顺序:从下到上,从右到左; css-loader开启css模块化modules: true,
  6. Go语言的流程控制(条件,选择,控制,跳转,闭包)
  7. 112、Java中String类之字符串文本拆分为指定的个数
  8. 3.Sprint 代理对象与原始对象的异常错误
  9. [Linux] day05——命令行
  10. Element-UI中关于table表格的样式操作