我在配置文件里面配置了proxool,连接池
然后在BaseDao 类里直接用jdbcTemplate操作db
是不是就能自动用到连接池的功能.这样用容器做我还真有点不习惯.
不知道所用的connection是否来自连接池!
希望知道的大侠能给我回答一下啊
<!--Mysql DataSource-->
<bean id="proxoolDataSource"
class="org.logicalcobwebs.proxool.ProxoolDataSource" >
<property name="driver">
<value>${proxool.dbDriver}</value>
</property>
<property name="driverUrl">
<value>${proxool.dbUrl}</value>
</property>
<property name="user">
<value>${proxool.dbUser}</value>
</property>
<property name="password">
<value>${proxool.dbPassWord}</value>
</property>
<property name="alias">
<value>springmvc</value>
</property>
</bean>
<!-- jdbc template -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="proxoolDataSource"/>
</property>
</bean> <!--Connection-->
<bean id="baseDao" class="com.cn.springcomm.BaseDao">
<property name="jdbcTemplate">
<ref bean="jdbcTemplate"/>
</property>
<property name="xtest" value="test"/>
</bean>
//CLASSpackage com.cn.springcomm;import java.util.List;
import org.springframework.jdbc.core.JdbcTemplate;public class BaseDao {
public BaseDao(){}
public List queryForList(String sql) {
List list = jdbcTemplate.queryForList(sql);
return list;
} private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
}
然后在BaseDao 类里直接用jdbcTemplate操作db
是不是就能自动用到连接池的功能.这样用容器做我还真有点不习惯.
不知道所用的connection是否来自连接池!
希望知道的大侠能给我回答一下啊
<!--Mysql DataSource-->
<bean id="proxoolDataSource"
class="org.logicalcobwebs.proxool.ProxoolDataSource" >
<property name="driver">
<value>${proxool.dbDriver}</value>
</property>
<property name="driverUrl">
<value>${proxool.dbUrl}</value>
</property>
<property name="user">
<value>${proxool.dbUser}</value>
</property>
<property name="password">
<value>${proxool.dbPassWord}</value>
</property>
<property name="alias">
<value>springmvc</value>
</property>
</bean>
<!-- jdbc template -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="proxoolDataSource"/>
</property>
</bean> <!--Connection-->
<bean id="baseDao" class="com.cn.springcomm.BaseDao">
<property name="jdbcTemplate">
<ref bean="jdbcTemplate"/>
</property>
<property name="xtest" value="test"/>
</bean>
//CLASSpackage com.cn.springcomm;import java.util.List;
import org.springframework.jdbc.core.JdbcTemplate;public class BaseDao {
public BaseDao(){}
public List queryForList(String sql) {
List list = jdbcTemplate.queryForList(sql);
return list;
} private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
}
HibernateTemplate
还有spring的Dao源码不是很复杂建议阅读
proxoolDataSource和org.apache.commons.dbcp.BasicDataSource用法一样其他连接池也一样,他们实现了共同的接口
spring的db模版取得了datasource对象就可以取得连接 封装了打开连接关闭连接的代码而已即便不用spring一般企业也都有自己不同程度的封装刑红瑞的博客中曾经详细的描述了不用connection用DataSource的原因你找下,也可以把他的博文都读下,我觉得他的一些见解都很独到.
http://blogger.org.cn/blog/blog.asp?name=hongrui
<bean id="proxoolDataSource"
class="org.logicalcobwebs.proxool.ProxoolDataSource" >
<property name="driver">
<value> ${proxool.dbDriver} </value>
</property>
<property name="driverUrl">
<value> ${proxool.dbUrl} </value>
</property>
<property name="user">
<value> ${proxool.dbUser} </value>
</property>
<property name="password">
<value> ${proxool.dbPassWord} </value>
</property>
<property name="alias">
<value> springmvc </value>
</property>
</bean>
<!-- jdbc template -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="proxoolDataSource"/>
</property>
</bean> <!--Connection-->
<bean id="baseDao" class="com.cn.springcomm.BaseDao">
<property name="jdbcTemplate">
<ref bean="jdbcTemplate"/>
</property>
<property name="xtest" value="test"/>
</bean>
//CLASS
package com.cn.springcomm; import java.util.List;
import org.springframework.jdbc.core.JdbcTemplate; public class BaseDao {
public BaseDao(){} public List queryForList(String sql) {
List list = jdbcTemplate.queryForList(sql);
return list;
} private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
} }
如下 <bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
<property name="driver" value="${datasource.driverClassName}" />
<property name="driverUrl" value="${datasource.url}" />
<property name="user" value="${datasource.username}" />
<property name="password" value="${datasource.password}" />
<property name="alias" value="${proxool.alias}" />
<property name="houseKeepingTestSql" value="${proxool.house-keeping-test-sql}" />
<property name="simultaneousBuildThrottle" value="${proxool.simultaneous-build-throttle}" />
<property name="maximumConnectionCount" value="${proxool.maximum-connection-count}" />
<property name="minimumConnectionCount" value="${proxool.minimum-connection-count}" />
<property name="maximumConnectionLifetime" value="${proxool.maximum-connection-lifetime}" />
<!--[Proxool Bug]Miss user and password properties, must add delegateProperties. -->
<property name="delegateProperties" value="user=${datasource.username},password=${datasource.password}" />
</bean>
但是我好像没有看到最大、最小的连接数目,在Proxool中可以不用配置?
你可以在web.xml里配置proxool的servlet,可以监视proxool的连接池情况,这是个很不错的功能,具体为: <servlet>
<servlet-name>proxooladmin</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>proxooladmin</servlet-name>
<url-pattern>/proxooladmin</url-pattern>
</servlet-mapping>
然后你可以看到连接池工作情况,如果你觉得这样看得还不够清楚,可以开启防火墙,监视你的数据库连接端口的活动回楼上:
作为一个连接池,最大/最小连接池数目是肯定支持的:
<property name="maximumConnectionCount" value="${proxool.maximum-connection-count}" />
<property name="minimumConnectionCount" value="${proxool.minimum-connection-count}" />
这两个就是最大/最小连接池数目
连接池的机制那那jdbctempt每次都会被new一次?
spring配置文件不是启动apserver的时候就自动单例的加载springapp-servlet.xml里面的类吗?
也就是说该web项目用到所有 springapp-servlet.xml 里面的类都是已经初始化好的