java获取配置文件数据源_java读取配置文件方式

本文介绍了在SpringBoot项目中读取配置文件数据源的三种方法:1) 使用@Value注解;2) 创建配置类配合@ConfigurationProperties;3) 直接在配置类中使用@ConfigurationProperties。通过这三种方式,可以方便地动态获取properties文件中的属性值。
摘要由CSDN通过智能技术生成

问题:

最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,不需要在进行查找修改代码。只针对于Springboot 使用

开发环境:

SpringBoot 2.1.0.RELEASE

Maven 3.3.9

Jdk 1.8

Idea 2018.1.2

三种常用的配置方式:以读取数据源的配置属性为例

第一种 java通用的配置方式:利用@Value注解

第一步:用IDEA 工具快速构建一个springboot 的web project 目录结构如下

7c2b63c68354d53f34b2507634627882.png

第二步:pom文件 添加依赖

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

cn.bearhunting

configdemo

0.0.1-SNAPSHOT

jar

configdemo

Demo project for Spring Boot

org.springframework.boot

spring-boot-starter-parent

2.1.0.RELEASE

UTF-8

UTF-8

1.8

org.springframework.boot

spring-boot-starter-web

com.alibaba

druid

1.1.8

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

第三步:创建要读取得配置文件 jdbc.properties,并添加属性值。

92bf0143ae64710503d13fee48f3df34.png

# 配置驱动

jdbc.driverClassName = com.mysql.jdbc.Driver

# 数据库连接得url

jdbc.url = jdbc:mysql://localhost:3306/test

# 连接数据库的用户名

jdbc.username = root

# 链接数据库得密码

jdbc.password = root

第四步:获取属性值,注入属性值

先创建一个配置类

package cn.bearhunting.configdemo.config;

import com.alibaba.druid.pool.DruidDataSource;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;

/**

* @ClassName: jdbcConfig

* @discription: 数据源属性配置

* @author: lele

* @create: 2018-11-28 15:34

*/

@Configuration

@PropertySource("classpath:jdbc.properties")

public class jdbcConfig {

@Value("${jdbc.driverClassName}")

private String driverClassName;

@Value("${jdbc.url}")

private String url;

@Value("${jdbc.username}")

private String username;

@Value("${jdbc.password}")

private String password;

@Bean

public DataSource getDataSource(){

DruidDataSource dataSource =new DruidDataSource();

dataSource.setDriverClassName(driverClassName);

dataSource.setUrl(url);

dataSource.setUsername(username);

dataSource.setPassword(password);

return dataSource;

}

}

注解说明:

@Configration

用于定义声明配置类,等同于xml配置文件

@PropertySource

可以点进去看源码,里面有示例

901a54010b505ddb5ef51082d7e58c27.png

@Value("${jdbc.driverClassName}")

读取配置文件的属性值

@Bean 配合@Configration使用,作用在方法上,相当于xml配置文件<?bean>

第五步:测试类 DUG 测试结果

package cn.bearhunting.configdemo;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.junit4.SpringRunner;

import javax.sql.DataSource;

@RunWith(SpringRunner.class)

@SpringBootTest

public class ApplicationTests {

@Autowired

private DataSource dataSource;

@Test

public void contextLoads() {

System.out.println(dataSource);

}

}

获取数据成功

35831c90f96ba7a04d3a8f2f9e5ac3f1.png

第二种方法:springboot 的配置方式

第三步,要把jdbc.properties 文件名改成 application.properties (application.properties是springboot的默认的配置文件,会自动读取)

c5899dcfa5b853509c75d90c0855622c.png

第四步,创建一个JdbcProperties属性配置类如下

package cn.bearhunting.configdemo.config;

import lombok.Data;

import org.springframework.boot.context.properties.ConfigurationProperties;

/**

* @ClassName: JdbcProperties

* @discription:

* @author: lele

* @create: 2018-11-28 16:25

*/

@ConfigurationProperties(prefix = "jdbc")

@Data

public class JdbcProperties {

private String driverClassName;

private String url;

private String username;

private String password;

}

@ConfigrationProperties(prefix = "jdbc")

指定前缀,属性文件的属性名和配置类的属性名要完全一致;

@Data

了解一下lombok 此处不做说明,作用是不用写set get 方法

第五步  将JdbcConfig 类进行改写

package cn.bearhunting.configdemo.config;

import com.alibaba.druid.pool.DruidDataSource;

import org.springframework.boot.context.properties.EnableConfigurationProperties;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

/**

* @ClassName: jdbcConfig

* @discription: 数据源属性配置

* @author: lele

* @create: 2018-11-28 15:34

*/

@Configuration

@EnableConfigurationProperties(JdbcProperties.class)

public class jdbcConfig {

@Bean

public DataSource getDataSource(JdbcProperties jdbcProperties){

DruidDataSource dataSource =new DruidDataSource();

dataSource.setDriverClassName(jdbcProperties.getDriverClassName());

dataSource.setUrl(jdbcProperties.getUrl());

dataSource.setUsername(jdbcProperties.getUsername());

dataSource.setPassword(jdbcProperties.getPassword());

return dataSource;

}

}

注解说明:

@EnableConfigurationProperties(JdbcProperties.class)

开启使用属性配置类 JdbcProperties

最后获取数据成功

第三种,最简洁的一种

不需要属性配置类 ,直接注入

package cn.bearhunting.configdemo.config;

import com.alibaba.druid.pool.DruidDataSource;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

/**

* @ClassName: jdbcConfig

* @discription: 数据源属性配置

* @author: lele

* @create: 2018-11-28 15:34

*/

@Configuration

public class jdbcConfig {

@Bean

@ConfigurationProperties(prefix = "jdbc")

public DataSource getDataSource(){

return new DruidDataSource();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值