action中添加属性UsersDAO 为其添加方法,private UsersDAO UsersDAO = null;
添加setter方法,代码中就可以用UsersDAO
访问UsersDAO 类中的方法:
<bean id="dataSource" class="orgspringframeworkjdbcdatasourceDriverManagerDataSource"><property name="driverClassName" value="netsourceforgejtdsjdbcDriver" />
<property name="url" value="jdbc:jtds:sqlserver://localhost:1433/database" />
<property name="username" value="sa" />
<property name="password" value="admin" />
</bean>
<bean id="sessionFactory"
class="orgspringframeworkormhibernate3LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"></ref>
</property>
</bean>
<bean id="UsersDAO" class="bysjqyqdaoimplUsersDAO">
<property name="sessionFactory">
<ref bean="sessionFactory"></ref>
</property>
</bean>
1,需要配置DynamicDataSource,DynamicDataSourceAspect,DynamicDataSourceContextHolder,DynamicDataSourceRegister,TargetDataSource来完成多数据源的配置 2,需要在配置文件中定义多数据源 3,测试过只有在前端调用过程中能够用多数据源,如果在各个中心去配置是行不通的,已经亲测过了。可以看看csdn上的我的这篇文章: spring boot动态数据源配置
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0912</version>
</dependency>
本文将对sdkservice生产环境上c3p0正在使用的各项配置进行详细解释,旨在为c3p0的配置提供参考标准。
sdkservice生成环境的配置如下:
#当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3
c3p0acquireIncrement=20
#初始化时获取连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3
c3p0initialPoolSize=20
#连接池中保留的最小连接数,默认为:3
c3p0minPoolSize=20
#连接池中保留的最大连接数。默认值: 15
c3p0maxPoolSize=100
#最大空闲时间,多少秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0
c3p0maxIdleTime=60
#c3p0全局的PreparedStatements缓存的大小。如果maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。如果默认值: 0
c3p0maxStatements=0
#c3p0是异步 *** 作的,缓慢的JDBC *** 作通过帮助进程完成。扩展这些 *** 作可以有效的提升性能通过多线程实现多个 *** 作同时被执行。Default: 3
c3p0numHelperThreads=10
#定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次
c3p0acquireRetryAttempts=5
#重新尝试的时间间隔,默认为:1000毫秒
c3p0acquireRetryDelay=300
#获取一个connection需要的时间,单位毫秒
c3p0checkoutTimeout=3000
#每隔多少秒检查所有连接池中的空闲连接。Default: 0
c3p0 idleConnectionTestPeriod=60
#c3p0将建一张名为改配置项的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么属性preferredTestQuery将#被忽略。你不能在这张Test表上进行任何 *** 作,它将只供c3p0测试使用。默认值: null。由于运营平台的数据库用户没有创建表的权限,故需要发sql创建表。
c3p0automaticTestTable=sys_connectiontest
#如果设为true那么在取得连接的同时将校验连接的有效性。Default: false
c3p0testConnectionOnCheckin=true
#一个checkout连接的超时设置,一旦一个checkout连接超时,他将物理的关闭,而不是返回池中,主要是防止连接被长期使用不释放,这个设置也是比较危险的
c3p0unreturnedConnectionTimeout=15
下面分块解释各配置项值的由来。
基础连接池配置:
maxPoolSize最大连接数在满足应用需要的情况下,参考默认值15,越小越好。由于sdkservice多次出现连接数不够的情况,该值也越改越大。现已改为100。
minPoolSize最小连接数需要小于等于最大连接数,参考默认值3,越小越好。同maxPoolSize的原因, 现已改为20。
initialPoolSize初始化连接数需要在最大和最小连接数之间,否则会被最小连接数的值替换,参考默认值3。 同maxPoolSize的原因, 现已改为20。
acquireIncrement连接耗尽时一次获取的连接数,参考默认值3,由于sdkservice用到的mysql proxy在连接不够进行扩容时,会出现获取连接失败的异常,所以将acquireIncrement的值设置较大,以减少mysql proxy的扩容异常。
maxIdleTime最大空闲时间,该时间内未使用,则丢弃。设置为60秒。
Statement连接池配置:
maxStatements每个连接缓存PreparedStatement的数量。在使用Statement缓存时,可能出现下列异常:
APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
c3p0在同时关闭statement和connection的时候,或者关闭他们之间的时间很短的时候,有时候connection并没有被关闭,因为有些preparedstatement还在被cached住。参考c3p0的作者所言:
>
<!-- 数据源配置,使用应用内的DBCP数据库连接池 -->
<bean id="dataSource" class="orgapachecommonsdbcpBasicDataSource" destroy-method="close">
<!-- Connection Info -->
<property name="driverClassName" value="${jdbcdriver}" />
<property name="url" value="${jdbcurl}" />
<property name="username" value="${jdbcusername}" />
<property name="password" value="${jdbcpassword}" />
<!-- Connection Pooling Info -->
<property name="maxIdle" value="${dbcpmaxIdle}" />
<property name="maxActive" value="${dbcpmaxActive}" />
<property name="defaultAutoCommit" value="false" />
<property name="timeBetweenEvictionRunsMillis" value="3600000" />
<property name="minEvictableIdleTimeMillis" value="3600000" />
</bean>
然后 写个applicationproperties文件
配置多个数据库的jdbcdriver等等
我知道的有两种:
一种:
单独写个jdbcproperties,在里面配置
jdbcdriverClassName=commysqljdbcDriver
jdbcurl=jdbc:mysql://localhost:3306/school
jdbcusername=root
jdbcpassword=root
然后,在applicationContext中设置你的jdbcproperties路径:
<bean id="propertyConfig" class="orgspringframeworkbeansfactoryconfigPropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbcproperties</value>
</list>
</property>
</bean>
在dataSource bean中把你配置中的参数引用:
<bean id="dataSource"
class="orgspringframeworkjdbcdatasourceDriverManagerDataSource">
<property name="driverClassName">
<value>${jdbcdriverClassName}</value>
</property>
<property name="url">
<value>${jdbcurl}</value>
</property>
<property name="username">
<value>${jdbcusername}</value>
</property>
<property name="password">
<value>${jdbcpassword}</value>
</property>
</bean>
二种,这种比较简单点儿,就直接在datasource bean中把jdbcproperties中的值在里面对应的地方配置就可以了。
以上就是关于spring配置文件中配置数据源的问题全部的内容,包括:spring配置文件中配置数据源的问题、springboot怎样动态配置数据库并设置默认数据源、spring mvc jdbc配置c3p0详细配置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)