• SpringBoot学习(三)-->Spring的Java配置方式之读取外部的资源配置文件并配置数据库连接池


    三、读取外部的资源配置文件并配置数据库连接池

    1、读取外部的资源配置文件

    通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值,具体用法:

    @Configuration //通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
    @ComponentScan(basePackages = "cn.mmzs.springboot") //配置扫描包
    @PropertySource(value= {"classpath:jdbc.properties"})
    public class SpringConfig {
        
        @Value("${jdbc.url}")
        private String jdbcUrl;
    
        @Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean>
        public UserDao getUserDAO(){
            return new UserDao(); // 直接new对象做演示
        }
        
    }

    思考:

    1)、  如何配置多个配置文件?

    //获取多个资源文件
    @PropertySource(value= {"classpath:jdbc.properties","classpath:log4j.properties","xxx"})

    2)、如果配置的配置文件不存在会怎么样?

    //使用,ignoreResourceNotFound设置为true来进行忽略没有找到的配置文件
    @PropertySource(value= {"classpath:jdbc.properties"},ignoreResourceNotFound = true)//获取一个资源文件
    @PropertySource(value= {"classpath:jdbc.properties","classpath:log4j.properties","xxx"},ignoreResourceNotFound = true)//获取多个资源文件

    2、配置数据库连接池

    a、导入依赖

    <!-- 连接池 -->
    <dependency>
        <groupId>com.jolbox</groupId>
        <artifactId>bonecp-spring</artifactId>
        <version>0.8.0.RELEASE</version>
    </dependency>

    b、利用xml文件配置时:

     1 jdbc.driverClassName=com.mysql.jdbc.Driver
     2 #数据库的路径
     3 #url=jdbc:mysql://localhost:3306/springboot
     4 jdbc.url=jdbc:mysql://localhost:3306/house
     5 jdbc.username=root
     6 jdbc.password=123456
     7 #定义初始连接数
     8 initialSize=0
     9 #定义最大连接数
    10 maxActive=20
    11 #定义最大空闲
    12 maxIdle=20
    13 #定义最小空闲
    14 minIdle=1
    15 #定义最长等待时间
    16 maxWait=60000
    jdbc.properties
         <!-- 定义数据源 -->
        <bean id="dataSource" class="cn.mmzs.springboot.javaconfig"
            destroy-method="close">
            <!-- 数据库驱动 -->
            <property name="driverClass" value="${jdbc.driverClassName}" />
            <!-- 相应驱动的jdbcUrl -->
            <property name="jdbcUrl" value="${jdbc.url}" />
            <!-- 数据库的用户名 -->
            <property name="username" value="${jdbc.username}" />
            <!-- 数据库的密码 -->
            <property name="password" value="${jdbc.password}" />
            <!-- 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0 -->
            <property name="idleConnectionTestPeriod" value="60" />
            <!-- 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0 -->
            <property name="idleMaxAge" value="30" />
            <!-- 每个分区最大的连接数 -->
            <!-- 
                判断依据:请求并发数
             -->
            <property name="maxConnectionsPerPartition" value="100" />
            <!-- 每个分区最小的连接数 -->
            <property name="minConnectionsPerPartition" value="5" />
        </bean>

    c、参考xml配置改造成java配置方式:

    @Configuration // 通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
    @ComponentScan(basePackages = "cn.mmzs.springboot") // 配置扫描包
    @PropertySource(value = { "classpath:jdbc.properties" }, ignoreResourceNotFound = true)
    public class SpringConfig {
    
        @Value("${jdbc.url}")
        private String jdbcUrl;
    
        @Value("${jdbc.driverClassName}")
        private String jdbcDriverClassName;
    
        @Value("${jdbc.username}")
        private String jdbcUsername;
    
        @Value("${jdbc.password}")
        private String jdbcPassword;
    
        @Bean(destroyMethod = "close")
        public DataSource dataSource() {
            BoneCPDataSource boneCPDataSource = new BoneCPDataSource();
            // 数据库驱动
            boneCPDataSource.setDriverClass(jdbcDriverClassName);
            // 相应驱动的jdbcUrl
            boneCPDataSource.setJdbcUrl(jdbcUrl);
            // 数据库的用户名
            boneCPDataSource.setUsername(jdbcUsername);
            // 数据库的密码
            boneCPDataSource.setPassword(jdbcUsername);
            // 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0
            boneCPDataSource.setIdleConnectionTestPeriodInMinutes(60);
            // 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0
            boneCPDataSource.setIdleMaxAgeInMinutes(30);
            // 每个分区最大的连接数
            boneCPDataSource.setMaxConnectionsPerPartition(100);
            // 每个分区最小的连接数
            boneCPDataSource.setMinConnectionsPerPartition(5);
            return boneCPDataSource;
        }
    
    }

    思考: 如何使用该DataSource对象?

    该咋用咋用,该注入就注入,该引用就引用,和之前一样,这里只是将资源的配置方式从xml文件形式修改成了java代码的形式而已。

  • 相关阅读:
    docker学习
    redis哨兵部署
    HUE中一些重要元数据表的DDL整理
    Autosys中ON_HOLD和ON_ICE的区别
    Spark结构化API的执行过程——Logical Plan & Physical Plan
    关于Spark中Columns的引用方法
    关于Spark Dataset API中的Typed transformations和Untyped transformations
    关于Kafka Consumer 与 Partitions
    使用sed根据变量值注释掉文件中相匹配的记录行
    sqoop export to teradata时出现java.lang.NullPointerException
  • 原文地址:https://www.cnblogs.com/mmzs/p/9230047.html
Copyright © 2020-2023  润新知