在我的spring mvc + hibernate + annotations项目中我有这三个类
UserServiceImpl.java
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserDAO userDAO;
//other codes
}
UserDAOImpl.java
@Repository("userDAO")
public class UserDAOImpl implements UserDAO {
@Autowired
private SessionFactory sessionFactory;
//other codes
}
RegistrationController.java
@Controller
@RequestMapping("/registration.htm")
public class RegistrationController {
@Autowired
private UserService userService;
//other codes
}
在我的 dispatcher-servlet.xml 中,我添加了以下内容
<context:annotation-config />
<context:component-scan base-package="com.alw.controllers,com.alw.DAOs,com.alw.services" />
和
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
当我运行项目时,我遇到以下例外情况:
Error creating bean with name 'registrationController':
Injection of autowired dependencies failed;
nested exception is org.springframework.beans.factory.BeanCreationException:
Could not autowire field: private com.alw.services.UserService
com.alw.controllers.RegistrationController.userService;
AND
Error creating bean with name 'sessionFactory' defined in ServletContext resource
[/WEB-INF/dispatcher-servlet.xml]:
Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError:
org/apache/commons/pool/impl/GenericObjectPool
有些人可以指出我失踪的地方吗? 今天已经过了整整一天。
修改
我添加了commons.pool但没有结果。
我有这些例外。
Error creating bean with name 'registrationController':
Error creating bean with name 'userService':
Error creating bean with name 'userDAO':
Error creating bean with name 'sessionFactory' defined in ServletContext
resource [/WEB-INF/dispatcher-servlet.xml]:
Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError:
Could not initialize class org.hibernate.cfg.AnnotationConfiguration
感谢....
答案 0 :(得分:0)
第二个很简单:你错过了CLASSPATH中包含org.apache.commons.pool.impl.GenericObjectPool
的JAR。
问题是:哪个类加载器? Java EE应用服务器具有类加载器的层次结构。我猜你想把这个JAR添加到你的服务器/ lib目录中,以便在建立连接池时它可用。
第一个对我来说并不清楚。尝试将您的基础包更改为“com.alw”,看看是否将其排序。
答案 1 :(得分:0)
正如duffymo指出的那样,你的类路径中缺少commons pool。至于另一个问题,当你说你得到错误1 和错误2时,你的意思是你在不同的时间得到两个不相关的错误,或者你得到错误1 由错误2.如果你同时在日志中看到它们,它们可能是同一个东西,第二个是第一个原因。
另一方面,您犯了一个常见错误,即将所有服务bean放入属于DispatcherServlet的上下文中。如果您还在根上下文中声明了bean,那么这也可能导致问题。请参阅此其他答案及其链接的答案,以了解Spring MVC应用程序中的根和子上下文之间的区别:
Why DispatcherServlet creates another application context?
特别是: