log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main"org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dbcppool' defined in class path resource [spring_mybatis.xml]: Error setting property values; nested exception isorg.springframework.beans.NotWritablePropertyException: Invalid property 'uname' of bean class [org.apache.commons.dbcp.BasicDataSource]: Bean property 'uname' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
这里是文件叫 spring_mybatis.xml文件,是整合过程中的访问数据以及注册sqlSessionFactory,注册事务等
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<bean id="peopertyPlcaceHolder"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:db_mysql.properties"/>
</bean>
<!-- 注册连接池 配置参数 -->
<bean id="dbcppool" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${passw}"/>
<!-- 伸缩性配置 -->
<property name="initialSize" value="${initialSize}"/>
<property name="maxActive" value="${maxActive}"/>
<property name="maxIdle" value="${maxIdle}"/>
<property name="minIdle" value="${minIdle}"/>
<property name="maxWait" value="${maxWait}"/>
</bean>
<!-- sqlSessionFactory对象 -->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dbcppool"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
<!-- 注册一个创建Mapper对象的bean类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="dao"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
<!-- 配置事务管理 -->
</beans>
driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/jsd1790
username=root
upass=qwe
#dbcp pool parameters
initialSize=2
maxActive=20
maxIdle=10
minIdle=2
maxWait=15000
通过多次试验
Dbcp 的方法中 dataSource的属性是固定的
通过测试 在我们使用dbcp产品的时候应该设置和人家已经设置好的参数一致
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.commons.dbcp.BasicDataSource;
public class DBCP_demo {
public static void main(String[] args) throws SQLException {
/*
* 实现DBCP数据库连接池
*/
//1.创建数据库连接池对象(缓冲区对象)
BasicDataSource dataSource = new BasicDataSource();
//2.设置JDBC的四大参数
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/class90");
dataSource.setUsername("root");
dataSource.setPassword("111");
//3.设置池参数(可选,数据库连接池对象都有默认参数值)
dataSource.setInitialSize(10);//连接池的初始化连接对象10个
dataSource.setMaxActive(10);//最大并打访问数10个
dataSource.setMaxIdle(5);//最大空闲数5个
dataSource.setMinIdle(2);//最小空闲数2个
dataSource.setMaxWait(300);//最大等待时间300毫秒
//4.从连接池中获取连接对象
Connection con = dataSource.getConnection();
/*
* 5.使用连接对象完成jdbc操作:
* jdbc:mysql://localhost:3306/class90, UserName=root@localhost, MySQL-AB JDBC Driver
*/
System.out.println(con);
//6.归还连接对象到池中
con.close();
}
}
<!--修改 这里dbcppool的四大参数的名字应该是固定的 name=”” 无论你的.properties文件里面的参数名是什么样都没关系,只和你的dbcp的四大参数有关-->
driverClassName
Url
Username
password
<bean id="dbcppool" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${passw}"/>