<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/studentnetworktest">
</property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/network/vo/News.hbm.xml</value>
</list>
</property>
</bean>
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="newsdao" class="com.network.dao.NewsDAO"
abstract="true">
</bean>
<bean id="newsdaoimpl" class="com.network.impl.NewsDAOImpl"
parent="newsdao" singleton="false">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate" />
</property>
</bean>
<bean name="/news" class="com.network.struts.action.NewsAction"
singleton="true">
<property name="newsdao">
<ref bean="newsdaoimpl" />
</property>
</bean>
</beans>
这是applicationcontext启动tomcat后说是初始化最后/news的bean的时候 属性newsdao缺少get set方法 但是newsaction中分明写了getsetNewsDao(接口)的方法难道不能<ref bean="newsdaoimpl" />吗? 如果改为<ref bean="newsdao" />的话 也就是注入接口 提示说newsdao是个接口 不可以实例化
解决方案 »
- java 静态代理 动态代理
- EJB + jboss开发 java.lang.NoSuchMethodError
- IE8显示不了jsp 请高手指教!
- 字符串转换成对象
- 在做bbs,除验证码外如何防止用户通过url发帖?会的进来教下思路谢谢。
- ejb3 blob 字段问题
- 把tomcat中的work装挂入内存虚拟盘中,能不能提高性能呢?
- 有关工作流OSWorkFlow的问题, 请达人帮忙
- hibernate 多对多自身关联 好友系统问题
- 用 openjms 如何传送一个 字节数组?
- ejb 3.0三张表两个一对多关系的关联映射有问题。
- java中Xml-Object间的互相转换(mapping)用最适合的技术或工具是什么
<bean id="newsdao" class="com.network.dao.NewsDAO"
abstract="true">
</bean>
<bean id="newsdaoimpl" class="com.network.impl.NewsDAOImpl"
parent="newsdao" singleton="false">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate" />
</property>
</bean>为什么newsdaoimpl这个bean要用parent="newsdao"?不需要吧..
还有hibernateTemplate的注入,你在NewsDAOImpl里面是否有 getHibernateTemplate,setHibernateTemplate?
<!--id="newsdao" 为dao接口
class="com.network.dao.NewsDAO" 这个class应该是"newsdao"接口的实现类,
但偶看你的名字不像,class="com.network.impl.NewsDAOImpl"比较像,
里面要有property hibernateTemplate的声明
-->
<bean id="newsdao" class="com.network.impl.NewsDAOImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"/>感觉你这句格式可能有问题
</bean>在newsdao里面要有hibernateTemplate的set
<bean name="/news" class="com.network.struts.action.NewsAction" singleton="true">
<property name="newsdao" ref="newsdao" />后一个newsdao引用上面的那个newsdao bean
</bean> 在NewsAction里面要有newsdao的set
看了您的回复后我加了getsethibernatetemplate方法
显示
Cannot override the final method from HibernateDaoSupport
具体调用的时候写的是Query q = this.getSession().createQuery(hql);
可以直接用哈
第二个问题 action里面也有newsdao接口的setget方法 但是如果直接写newsdao(接口)的话 他会提示
Error creating bean with name 'newsdao': Bean definition is abstract
但是写newsdaoimpl(实际的DAO)的话
Invalid property 'newsdao' of bean class [com.network.struts.action.NewsAction]: Bean property 'newsdao' is not writable or has an invalid setter method: Does the parameter type of the setter match the return type of the getter?
其中 newsdao是property的名字 ref是newsdaoimpl
<property name="newsdao" ref="newsdao" />
ref="newsdao"是引用 bean id="newsdao" <bean id="newsdao" class="com.network.impl.NewsDAOImpl">
name="newsdao"是对应NewsAction类里private NewsDAO newsdao;setNewsdao();