首先看问题:
1 不能创建bean
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loginAction'
2 bean 中其他的引用也不能创建
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibLoginDAOImpl': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'annotatedClasses' of bean class [org.springframework.orm.hibernate3.LocalSessionFactoryBean]: Bean property 'annotatedClasses' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
先不看第二个错误后面的提示,可以判断为配置问题.
sessionFactory 不能扫描bean .,因为之前只把 mappingDirectoryLocations 改了annotatedClasses .
所以要看下面的配置.
Spring对hibernate配置文件hibernate.cfg.xml的集成,来取代hibernate.cfg.xml的配置
spring对hibernate配置文件hibernate.cfg.xml的集成相当好,可以在Spring中配置Hibernate的SessionFactory从而取代Hibernate.cfg.xml和HibernateSessionFactory.java
Spring在集成Hibernate时又分为两种形式:(集成后就不需要Hibernate.cfg.xml了)
1、继续使用Hibernate的映射文件*.hbm.xml
2、使用jpa注解形式的pojo对象,而去掉*.hbm.xml的Hibernate映射文件
1、继续使用Hibernate的映射文件*.hbm.xml时扫描映射文件的方法
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
2、使用jpa注解形式的pojo对象,而去掉*.hbm.xml的Hibernate映射文件 时配置的方法
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
由第一种转第二种注解配置的时候.区别就在这里.
同时引入的实体类不变.
<property name="annotatedClasses">
<list>
<value>com.danlan.vo.Knowledge</value>
<value>com.danlan.vo.MjhUserinfo</value>
</list>
</property>
至此.错误解决.