我两个应用类 (UserManagerImp1 , LogManagerImp1)继承了 HibernateDaoSupport,下面是我的配置文件:
----------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!--
Application context definition for PetClinic on Hibernate.
-->
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <!-- 配置SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean> <!-- 配置事物管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<!-- 配置事物传播特性 -->
<tx:advice id="txadvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="upd*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>

<!-- 哪些类的哪些方法参与事务 -->
<aop:config>
<aop:pointcut id="allmethod" expression="execution(* cn.orc.jie.manager.*.*(..))"/>
<aop:advisor id="aopAdvisor" advice-ref="txadvice" pointcut-ref="allmethod"/>
</aop:config>

<!-- 注入应用类 -->
<bean id="logManager" class="cn.orc.jie.manager.LogManagerImp1"/>
<bean id="userManager" class="cn.orc.jie.manager.UserManagerImp1">
<property name="logImp1" ref="logManager1"/>
</bean>
</beans>应用类 和它实现的接口
-----------------------------
package cn.orc.jie.manager;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import cn.orc.jie.model.Log;
public class LogManagerImp1  extends HibernateDaoSupport implements LogManager{
public void add(Log log) {
this.getHibernateTemplate().save(log);
}
}package cn.orc.jie.manager;import java.util.Date;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import cn.orc.jie.model.Log;
import cn.orc.jie.model.User;//
public class UserManagerImp1 extends HibernateDaoSupport implements UserManager { private LogManagerImp1 logImp1; public void setLogImp1(LogManagerImp1 logImp1) {
this.logImp1 = logImp1;
} public void add(User user) {
this.getHibernateTemplate().save(user);
Log log = new Log();
log.setInfo("xxx进入系统");
log.setTime(new Date());
log.setType("安全系统");
logImp1.add(log);
}
}测试类:
----------------------------
package cn.orc.jie.client;import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;import cn.orc.jie.manager.UserManager;
import cn.orc.jie.model.User;public class client1 {
public static void main(String[] args) {
BeanFactory bf = new ClassPathXmlApplicationContext("applicationContext-hibernate.xml");
UserManager um = (UserManager) bf.getBean("userManager");
User user = new User();
user.setName("kobe");
um.add(user);
}
}---------------------
当我运行测试类的时候 总是出现下面错误:Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logManager' defined in class path resource [applicationContext-hibernate.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required这是什么问题啊? 我想了好久了 你们帮我看下 谢谢! 本人在线等待

解决方案 »

  1.   

    manager没有注入sessionfactory
    <bean id="logManager" class="cn.orc.jie.manager.LogManagerImp1"> 
    <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
      

  2.   

    logManager1 没有定义啊
    你的
    <bean id="logManager" class="cn.orc.jie.manager.LogManagerImp1"/> 
    <property name="logImp1" ref="logManager1"/> 
    改成logManager
      

  3.   

    <bean id="logManager" class="cn.orc.jie.manager.LogManagerImp1"/> 
    <bean id="userManager" class="cn.orc.jie.manager.UserManagerImp1"> 
    <property name="logImp1" ref="logManager1"/> 
    </bean>
    这两个都需要注入sessionFactory的,加上
    <property name="sessionFactory" ref="sessionFactory"/>