1. 简介
在Java的漫长发展过程当中,其项目的配置方式也发生了很多次变化。
第一阶段:都是通过xml来配置bean。缺点:随着项目不断扩大,需要将xml分别放到不同的配置文件中。
第二阶段:因为JDK1.5支持了注解配置,于是配置文件的方式也发生了变化。对与基本配置用xml,而对于业务开发则使用注解来配置。
第三阶段:使用Java配置。配置Java类进行注解来配置属性。
2. 配置注解
Spring的Java配置方式是通过@Configuration
和@Bean
这两个注解来实现的。
其中@Configuration
作用于类上,相当于一个xml配置文件。
而@Bean
作用于方法上,相当于一个<bean>标签。
3. 用注解代替配置文件
在springboot中会使用@PropertySource
来指定读取的配置文件,并且通过@Value
注解获取值。
<1>如何配置多个配置文件?
配置多个配置文件的示例如下:
//在类上配置注解如下
@PropertySource(value="classpath:jdbc.properties","test.properties")
<2>如果配置文件不存在,如何解决?
可以通过配置忽略文件不存在的情况,防止程序抛出ClassNotFoundException。
//在类上配置注解如下
@PropertySource(value={"classpath:jdbc.properties"},
ignoreResourceNotFound=true)
4. 数据库配置
之前的配置方式如下:
<!-- 定义数据源 -->
<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"
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>
如果要改成java配置放下则如:
@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;
}