在SSH2框架集成中,Bean的注入获得的是null,同时this.HibernateTemplate()同样也是获得null。大家帮忙谢 10

意思是sessionFactory和一般的bean都没有注入成功:applicationContext-dao.xml的配置如下:<beanid="memberDao"c... 意思是sessionFactory和一般的bean都没有注入成功:
applicationContext-dao.xml的配置如下:
<bean id="memberDao" class="net.helay.kledu.dao.MemberDao" scope="prototype">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<!-- 配置sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
applicationContext-service.xml的配置:
<bean id="memberService" class="net.helay.kledu.service.MemberService" scope="prototype">
<property name="memberIDao" ref="memberDao"></property>
</bean>
applicationContext-action.xml的配置
<bean name="*Member" class="net.helay.kledu.control.MemberAction" scope="prototype">
<property name="memberIService" ref="memberService"/>
</bean>

struts2.xml中配置
<action name="*Member" class="net.helay.kledu.control.MemberAction" method="{1}" >
<result name="false" >/index.jsp</result>
<result name="true">/main.jsp</result> </action>

hibernate.cfg.xml的配置
<session-factory>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.username">helay</property>
<property name="hibernate.connection.password">helay</property>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="net/helay/kledu/bean/Member.hbm.xml"/>
</session-factory>
web.xml的配置如下
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 配置Spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext*.xml</param-value>
</context-param>
<!-- 配置Spring的接听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

备注:IDao是Dao所实现的接口,IService也是Service类所实现的接口。在MemberService定义IDao,Spring的Service对应的bean中将Dao注入到IDao,Action中也同理。
上面的applicationContext-dao.xml中省去了事物管理的部分。
谢谢个人对我的问题的热心帮助,这个问题我自己搞定了。谢谢你们。
展开
 我来答
飘渺幻客
2011-04-06 · TA获得超过460个赞
知道答主
回答量:166
采纳率:0%
帮助的人:0
展开全部
因为你的HibernateTemplate()在 Dao中,
你的 IDa o继承了 Dao,
而sessionfactory只是注入到Dao中,
当你的Service调用的时候用的是Dao=new IDao,
你要在Service中要告诉Dao你实际调用的是哪个IDao
所以你这么写是不对的,照你的写法,有两种改法,

第一种: 父类Dao不要在配置文件中 申明, 由Service层注入
<bean id="memberIDao" class="net.helay.kledu.dao.MemberIDao" scope="prototype">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<bean id="memberIService" class="net.helay.kledu.service.MemberIService" scope="prototype">
<property name="memberIDao" ref="memberIDao"></property>
<property name="Dao" ref="memberIDao"></property>
</bean>

第二种: 不在service配置文件中注入父类的Dao,在IServiceImpl.java中
setMemberIDao(MemberIDao memberIDao){
this.memberIDao=memberIDao;
super.setDao(memberIDao);
}
追问
我的Dao是实现IDao接口的。不过你提过的方法我可以去试试。谢谢你的关注。
暮影1994
2014-11-18 · TA获得超过2338个赞
知道大有可为答主
回答量:1215
采纳率:60%
帮助的人:402万
展开全部
那个,不好意思,既然解决的话,把解决方案能否公布一下,百度就他妈的一堆问题,答案没几个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
freejsdou
2011-04-06 · TA获得超过421个赞
知道小有建树答主
回答量:364
采纳率:100%
帮助的人:377万
展开全部
你的:hibernate.cfg.xml文件是放哪儿的?放classes目录下
更多追问追答
追问
src下面的。struts.xml ,applicationContext-dao.xml,applicationContext-service.xml,applicactionContext-action.xml 和hibernate.cfg.xml都是在src下面放的。
追答
启动时有spring的加载信息吗?
classpath:hibernate.cfg.xml
改成
classpath*:hibernate.cfg.xml试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
老壳才痛
2011-04-06
知道答主
回答量:36
采纳率:0%
帮助的人:19.8万
展开全部
spring帮你注入,但是你需要提供set方法才行
例如:你注入了
private TestService testService;
public void setTestService(TestService testService) {
this.testService = testService;
}
如果没有set方法,在用到testService时,testService=null,一旦调用testService里的方法时
会报空指针异常的
追问
我都提供了getter和setter方法了的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1039725910
2011-04-06 · TA获得超过318个赞
知道小有建树答主
回答量:364
采纳率:100%
帮助的人:265万
展开全部
struts2.xml中配置
<action name="*Member" class="net.helay.kledu.control.MemberAction" method="{1}" >
<result name="false" >/index.jsp</result>
<result name="true">/main.jsp</result> </action>

class配错了,应该和Spring中的对应估计你的应该叫memberAction
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zihai367
2011-04-07 · TA获得超过462个赞
知道答主
回答量:24
采纳率:50%
帮助的人:7.3万
展开全部
在session-factory的bean中没有配置你说的bean的*.hbm.xml,例如你有个user类,一定会有user.hbm.xml,你就没配置它
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式