关于springmvc中jdbc数据源连接的问题····

阿凡驴子 2014-11-27 10:54:31
我在项目的xxx-servlet.xml文件中配置了如下:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/tsc?useUnicode=true&characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="root" />
<property name="initialSize" value="3" />
<property name="maxActive" value="100" />
<property name="maxIdle" value="50" />
<property name="minIdle" value="10" />
</bean>

但是我在java代码中如何使用这个数据源啊。。。
好像这样不行啊:
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/tsc");
Connection con = ds.getConnection(); 找不到java:comp/env/jdbc/tsc这个啊,到底怎么用的。。。

还有就是如何我配置了jdbcTemplate
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
使用了jdbcTemplate 是不是就等于使用了已配置的dbcp数据源啊····
...全文
1062 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
enigmatic_child 2015-12-21
  • 打赏
  • 举报
回复
引用 10 楼 magi1201 的回复:
参考 spring jdbc 使用
不好意思,回复错地方了!!!
enigmatic_child 2015-12-21
  • 打赏
  • 举报
回复
引用 10 楼 magi1201 的回复:
参考 spring jdbc 使用
按照这种方式配置我也知道,把一切都写死,确实不会报错。但我想搞清楚的是为什么采用文件配置的方式,竟然无法读取到url/username等等,是不是我的配置地址和文件写法有问题??
猎魔人-不纯 2014-11-27
  • 打赏
  • 举报
回复
看来是完全不懂spring 注入啊
姜小白- 2014-11-27
  • 打赏
  • 举报
回复
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/tsc?useUnicode=true&characterEncoding=utf8" /> <property name="username" value="root" /> <property name="password" value="root" /> <property name="initialSize" value="3" /> <property name="maxActive" value="100" /> <property name="maxIdle" value="50" /> <property name="minIdle" value="10" /> </bean> 上面是spring的方式配置数据源 Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/tsc"); 这个是通过jndi的方式获取数据源 两个不是一回事,你没有将数据源交给jndi去管理,所以这里是拿不到的 楼主看看tomcat配置数据库连接池吧,参考 tomcat7配置jndi数据源
小小2050 2014-11-27
  • 打赏
  • 举报
回复
在你的Dao注入dataSource(db.dbDAO为你使用数据链接的类) <bean id="dbDAO" class="db.dbDAO"> <property name="jdbcTemplate"> <ref bean="jdbcTemplate" /> </property> <property name="dataSource"> <ref bean="dataSource" /> </property> </bean> 在代码增加 private DataSource dataSource; private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public DataSource getDataSource() { return dataSource; } public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; }
姜小白- 2014-11-27
  • 打赏
  • 举报
回复
阿凡驴子 2014-11-27
  • 打赏
  • 举报
回复
引用 2 楼 magi1201 的回复:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/tsc?useUnicode=true&characterEncoding=utf8" /> <property name="username" value="root" /> <property name="password" value="root" /> <property name="initialSize" value="3" /> <property name="maxActive" value="100" /> <property name="maxIdle" value="50" /> <property name="minIdle" value="10" /> </bean> 上面是spring的方式配置数据源 Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/tsc"); 这个是通过jndi的方式获取数据源 两个不是一回事,你没有将数据源交给jndi去管理,所以这里是拿不到的 楼主看看tomcat配置数据库连接池吧,参考 tomcat7配置jndi数据源
那我想问下怎样直接用我的spring配置的数据源呢?怎么获取啊
浮云若水 2014-11-27
  • 打赏
  • 举报
回复

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop.xsd
            http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx.xsd"  default-autowire="byName" default-lazy-init="true">

	<!-- 使用 annotation -->
	<context:annotation-config />
   	<!-- 使用 annotation 自动注册bean,并检查@Controller, @Service, @Repository注解已被注入 --> 
	<context:component-scan base-package="com.cmcc" />
	
	
	<!-- spring的属性加载器,加载properties文件中的属性 -->
	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location">
			<value>classpath:config.properties</value>
		</property>
		<property name="fileEncoding" value="utf-8" />
	</bean>
	
	<!-- 数据库配置 -->
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName">
		<value>com.ibm.db2.jcc.DB2Driver</value>
		</property>
		<property name="url">
		<value>${url}</value>
		</property>
		<property name="username"><value>${username}</value></property>
		<property name="password"><value>${password}</value></property>
		<!-- 初始化链接数 -->
		<property name="initialSize" ><value>${initialSize}</value></property>
		<!-- 连接池可分配最大连接数 -->
		<property name="maxActive" ><value>${maxActive}</value></property>
		<!-- 池里不会被释放的最多空闲连接数量 -->
		<property name="maxIdle" ><value>${maxIdle}</value></property>
		<!-- 在不新建连接的条件下,池中保持空闲的最少连接数 -->
		<property name="minIdle"><value>${minIdle}</value></property>
		
		<!-- 设置在自动回收超时连接的时候打印连接的超时错误  -->  
		<property name="logAbandoned" > <value>${logAbandoned}</value> </property>
		
		<!-- 设置自动回收超时连接 -->  
		<property name="removeAbandoned" ><value>${removeAbandoned}</value> </property>
		
		<!-- 自动回收超时时间(以秒数为单位) -->  
		<property name="removeAbandonedTimeout"> <value>${removeAbandonedTimeout}</value></property>
		 
		<!-- 超时等待时间以毫秒为单位  -->  
		<property name="maxWait" > <value>${maxWait}</value> </property>
	</bean>

	<!-- sessionFactory -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.DB2Dialect
				</prop>
				<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
				<!-- 可以自动创建数据库表(create),不创建(none) -->
				<!--<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>  -->
				<!-- 开启二级缓存 -->
				<prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
				<!-- 关掉查询时的二级缓存 -->  
				<prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
				<!-- 缓存类 -->
				<prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>
			</props>
		</property>
		<!-- 包扫描的方式加载注解类 -->
		<property name="packagesToScan">
			<list>
				<value>${packagesToScan}</value>
			</list>
		</property>
	</bean>

	<!--JDBC事务管理器,根据你的情况使用不同的事务管理器,如果工程中有Hibernate,就用Hibernate的事务管理器 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
	</bean>

	<!-- 用注解来实现事务管理 -->
	<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
MIT的梦 2014-11-27
  • 打赏
  • 举报
回复
没有配置数据源,肯定拿不到了。 spring配置的数据源为什么不用呢?
MIT的梦 2014-11-27
  • 打赏
  • 举报
回复
引用 2 楼 magi1201 的回复:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/tsc?useUnicode=true&characterEncoding=utf8" /> <property name="username" value="root" /> <property name="password" value="root" /> <property name="initialSize" value="3" /> <property name="maxActive" value="100" /> <property name="maxIdle" value="50" /> <property name="minIdle" value="10" /> </bean> 上面是spring的方式配置数据源 Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/tsc"); 这个是通过jndi的方式获取数据源 两个不是一回事,你没有将数据源交给jndi去管理,所以这里是拿不到的 楼主看看tomcat配置数据库连接池吧,参考 tomcat7配置jndi数据源
学习了
April_CH 2014-11-27
  • 打赏
  • 举报
回复
set到你的dao中
licip 2014-11-27
  • 打赏
  • 举报
回复
引用 2 楼 magi1201 的回复:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/tsc?useUnicode=true&characterEncoding=utf8" /> <property name="username" value="root" /> <property name="password" value="root" /> <property name="initialSize" value="3" /> <property name="maxActive" value="100" /> <property name="maxIdle" value="50" /> <property name="minIdle" value="10" /> </bean> 上面是spring的方式配置数据源 Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/tsc"); 这个是通过jndi的方式获取数据源 两个不是一回事,你没有将数据源交给jndi去管理,所以这里是拿不到的 楼主看看tomcat配置数据库连接池吧,参考 tomcat7配置jndi数据源
+1

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧