Spring学习------配置数据源(c3p0数据源)、注解开发
配置数据源:
<bean name="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
其中的value值我引用的自己创建的jdbc.properties文件,可以修改
下面是一些其他属性
C3P0拥有比DBCP更丰富的配置属性,通过这些属性,可以对数据源进行各种有效的控制:
acquireIncrement:当连接池中的连接用完时,C3P0一次性创建新连接的数目;
acquireRetryAttempts:定义在从数据库获取新连接失败后重复尝试获取的次数,默认为30;
acquireRetryDelay:两次连接中间隔时间,单位毫秒,默认为1000;
autoCommitOnClose:连接关闭时默认将所有未提交的操作回滚。默认为false;
automaticTestTable: C3P0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数,那么属性preferredTestQuery将被忽略。你 不能在这张Test表上进行任何操作,它将中为C3P0测试所用,默认为null;
breakAfterAcquireFailure:获取连接失败将会引起所有等待获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调 用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认为 false;
checkoutTimeout:当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒,默认为0;
connectionTesterClassName: 通过实现ConnectionTester或QueryConnectionTester的类来测试连接,类名需设置为全限定名。默认为 com.mchange.v2.C3P0.impl.DefaultConnectionTester;
idleConnectionTestPeriod:隔多少秒检查所有连接池中的空闲连接,默认为0表示不检查;
initialPoolSize:初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值。默认为3;
maxIdleTime:最大空闲时间,超过空闲时间的连接将被丢弃。为0或负数则永不丢弃。默认为0;
maxPoolSize:连接池中保留的最大连接数。默认为15;
maxStatements:JDBC的标准参数,用以控制数据源内加载的PreparedStatement数量。但由于预缓存的Statement属 于单个Connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素,如果maxStatements与 maxStatementsPerConnection均为0,则缓存被关闭。默认为0;
maxStatementsPerConnection:连接池内单个连接所拥有的最大缓存Statement数。默认为0;
numHelperThreads:C3P0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能,通过多线程实现多个操作同时被执行。默认为3;
preferredTestQuery:定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个参数能显著提高测试速度。测试的表必须在初始数据源的时候就存在。默认为null;
propertyCycle: 用户修改系统配置参数执行前最多等待的秒数。默认为300;
testConnectionOnCheckout:因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的时候都 将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable
等方法来提升连接测试的性能。默认为false;
testConnectionOnCheckin:如果设为true那么在取得连接的同时将校验连接的有效性。默认为false。
注解开发:
旧注解:替代applcationContext.xml文件中的bean配置语句
使用时要开启注解扫描,在applicationContext.xml文件中配置如下:
<!--扫描范围-->
<context:component-scan base-package="com.fyp"/>
<!--开启注解-->
<context:annotation-config></context:annotation-config>
@Component:用于实例化bean对象,最原始,其他旧bean注解底层依赖它
@Controller:用于web层进行实例化bean对象
@Controller("control")
public class Control {
public static void main(String[] args) {
}
}
@Service:用于service层进行实例化bean对象
@Service("userService")//Service层注入
public class UserServiceImpl implements UserService {
}
@Repository:用于dao层进行实例化bean对象
@Repository("userDao")
public class UserDaoImpl implements UserDao {
}
@Autowired:用于类中字段的注入,比如某个私有的User类型的user字段,它是根据字段类型进行依赖注入的
@Autowired 根据属性类型进行依赖注入
private UserDao userDao;
@Qualifier:它是根据bean的id名进行依赖注入
@Qualifier("userDao") 根据beanid进行注入
private UserDao userDao;
@Resource:他是@[email protected]的合并,根据名字进行注入
@Resource(name = "userDao") //相当于@[email protected]一起用,根据名字进行注入
private UserDao userDao;
@Value:进行普通属性的注入
//普通属性注入
@Value("${jdbc.driver}")
private String driver;
@Scope:配置bean对象的作用范围
新注解:减少配置文件,增加了配置类
@Configuration:标注该类为Spring配置类
直接在自己设定的核心配置类名前配置该注解
@Configuration
//@ComponentScan("com.fyp")
//@Import(DataSourceConfig.class)
public class SpringConfig {
}
@ComponentScan:用于配置扫描范围与配置文件中<context:component-scan base-package=“com.fyp”/>作用一样
同样在核心配置类前配置该注解
//@Configuration
@ComponentScan("com.fyp")
//@Import(DataSourceConfig.class)
public class SpringConfig {
}
@Bean:标注于方法上,会将方法的返回值放入Spring容器中
@Bean("datasource")
public DataSource getDataSource() throws Exception{
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
comboPooledDataSource.setDriverClass(driver);
comboPooledDataSource.setJdbcUrl(url);
comboPooledDataSource.setUser(username);
comboPooledDataSource.setPassword(password);
return comboPooledDataSource;
}
@PropertySource:用于加载后缀为.properties文件中的配置
数据
在某个配置类前配置该注解
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
public DataSource getDataSource() throws Exception{
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
comboPooledDataSource.setDriverClass(driver);
comboPooledDataSource.setJdbcUrl(url);
comboPooledDataSource.setUser(username);
comboPooledDataSource.setPassword(password);
return comboPooledDataSource;
}
}
@Import:用于引入其他文件。
在核心配置类或者其他配置类前配置该注解
//@Configuration
//@ComponentScan("com.fyp")
@Import(DataSourceConfig.class)
public class SpringConfig {
}
参考:
四种数据源配置
https://blog.csdn.net/orclight/article/details/8616103
上一篇: jsp连接数据库大全_MySQL
下一篇: Spring之自动装配
推荐阅读
-
JNDI学习总结(二)——Tomcat下使用C3P0配置JNDI数据源
-
Spring配置C3P0、Druid数据源和JdbcTemplate模板类
-
spring整合c3p0整合mybatis。spring使用java配置类来整合配置c3p0数据源和mybatis。
-
Spring学习------配置数据源(c3p0数据源)、注解开发
-
Spring 产生SessionFactory,使用c3p0配置数据源相关配置
-
配置数据源(C3P0)------SPRING传统方法
-
spring框架学习【多数据源配置】
-
spring框架学习【多数据源配置】
-
C3P0 配置spring数据源
-
总结spring下配置dbcp,c3p0,proxool数据源链接池