SpringBoot学习(三)-->Spring的Java配置方式之读取外部的资源配置文件并配置数据库连接池
阅读正文:
三、读取外部的资源配置文件并配置数据库连接池
1、读取外部的资源配置文件
通过 @PropertySource 可以指定读取的配置文件,通过 @Value 注解获取值,具体用法:
@Configuration //通过该注解来表明该类是一个 Spring 的配置,相当于一个 xml 文件 @ComponentScan(basePackages = "cn.mmzs.springboot") //配置扫描包 @PropertySource(value= {"classpath:jdbc.properties"}) public class SpringConfig {@Value(</span>"${jdbc.url}"<span style="color: rgba(0, 0, 0, 1)">) </span><span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> String jdbcUrl; @Bean </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 通过该注解来表明是一个Bean对象,相当于xml中的<bean></span> <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> UserDao getUserDAO(){ </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">new</span> UserDao(); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 直接new对象做演示</span>
}
}
思考:
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
<!-- 定义数据源 --> <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(</span>"${jdbc.url}"<span style="color: rgba(0, 0, 0, 1)">) </span><span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> String jdbcUrl; @Value(</span>"${jdbc.driverClassName}"<span style="color: rgba(0, 0, 0, 1)">) </span><span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> String jdbcDriverClassName; @Value(</span>"${jdbc.username}"<span style="color: rgba(0, 0, 0, 1)">) </span><span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> String jdbcUsername; @Value(</span>"${jdbc.password}"<span style="color: rgba(0, 0, 0, 1)">) </span><span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> String jdbcPassword; @Bean(destroyMethod </span>= "close"<span style="color: rgba(0, 0, 0, 1)">) </span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> DataSource dataSource() { BoneCPDataSource boneCPDataSource </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> BoneCPDataSource(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 数据库驱动</span>
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 代码的形式而已。