错误消息:在类'UserDaoImpl'中没有定义1个参数的构造函数[配置集:myProject/web-context]
在阅读了其他几个类似的问题后,验证了类中的所有构造函数都使用相同的类名命名,类型为公共访问修饰符,并且构造函数中没有返回类型。
此错误消息仍然显示在休眠状态中.cfg.xml
<bean id="userDaoImpl" class="com.company.users.dao.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
而且,这是UserDaoImpl类中的构造函数代码。
public UserDaoImpl(SessionFactory sessionFactory) {
super();
this.sessionFactory = sessionFactory;
}
@Gusman [添加]
休眠会话工厂
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="mappingResources">
<list>
<value>/resources/hibernate/User.hbm.xml</value>
<value>/resources/hibernate/UserRole.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
</props>
</property>
</bean>
@hooknc [添加]
这是UserDaoImpl文件中的setter代码。
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
如果你更仔细地查看你的 spring 配置文件,你会发现你正在尝试在你的UserDaoImpl
上设置一个属性。 根据你的UserDaoImpl
类,你有一个采用SessionFactory
的构造函数。 导致错误是因为 spring 尝试在 UserDaoImpl
上调用零参数构造函数,但没有。
只有构造函数需要SessionFactory
。
如果您将 spring 配置文件更改为使用构造函数值,则一切都应该解决:
<bean id="userDaoImpl" class="com.company.users.dao.UserDaoImpl">
<constructor-arg name="sessionFactory" ref="sessionFactory"/>
</bean>