如何解决 – 创建名为’defaultController’的bean时出错
我是Spring MVC和Hibernate的新手。 几天我试图做一个简单的春季项目,但在那里遇到了一些错误。 错误说org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为’CustomerDAOImp’的bean时出错
这是我的错误
HTTP状态500 – 内部服务器错误
类型exception报告
messageInternal服务器错误
description服务器遇到内部错误,导致无法完成此请求。
例外
javax.servlet.ServletException:servlet调度程序的Servlet.init()引发了exception根本原因
org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为’CustomerDAOImp’的bean时出错:通过字段’sessionFactory’表示的不满意的依赖关系; 嵌套exception是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型’org.hibernate.SessionFactory’的限定bean可用:预期至少有1个bean可以作为autowire候选者。 依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}根本原因
org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型’org.hibernate.SessionFactory’的限定bean可用:预计至少有一个bean可以作为autowire候选者。 依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}注意GlassFish Server Open Source Edition 4。1。1日志中提供了exception的完整堆栈跟踪及其根本原因。
GlassFish Server开源版4.1.1
我用maven multi模块完成了这个项目。 这里’CustomerDAOImp’是我在CustomerDAOImp类中定义的存储库的名称。 这是扩展GenericImp类并实现CustomerDAO接口的java类,并且进一步的CustomerDAO扩展了GenericDAO接口。
CustomerDAOImp
@Repository(value = "CustomerDAOImp") public class CustomerDAOImp extends GenericDAOImp implements CustomerDAO{ }
CustomerDAO
public interface CustomerDAO extends GenericDAO{ }
GenericDAO
public interface GenericDAO { void insert(T t); void update(T t); boolean delete(int id); List getAll(); T getById(int id); }
我的控制器用于映射jsp页面
@Controller public class DefaultController { @Autowired CustomerDAOImp customerDaoImp; @RequestMapping(value = "/", method = RequestMethod.GET) public String index() { return "user/dairy/index"; } @RequestMapping(value = "/customer", method = RequestMethod.GET) public String customer(Model model) { model.addAttribute("customer", customerDaoImp.getAll()); return "user/dairy/customer"; } }
调度员servlet.xml中
applicationContext.xml中
org.hibernate.dialect.MySQLDialect true
这是我的项目结构
希望得到积极的回应,谢谢………..
你是如何创建ApplicationContext的? 您是否已在程序中以编程方式创建它,或者期望您的Spring声明能够处理它?
根据您提供的内容,看起来在调度程序初始化和相应的DAOdependency injection期间发生了故障。 并且在applicationContext.xml
中定义了DAO依赖项,这与dispatcher-servlet.xml
不同。 所以似乎在加载dispatcher-servlet.xml
没有加载applicationContext.xml
。
检查您的web.xml
以确保您有一个ContextLoader,它可以自动实例化Spring MVC应用程序的根和Web应用程序上下文。
这些行应该存在:
org.springframework.web.context.ContextLoaderListener
您可以如上所述初始化您的上下文或以编程方式执行; 有关详细信息,请参阅以下内容: https : //docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-servlet-context-hierarchy和https://docs.spring.io /spring/docs/current/spring-framework-reference/core.html#context-introduction
您还可以检查上下文是否在日志中正确加载。 他们将提供有关bean初始化的详细信息。 在应用程序初始化和servlet加载阶段共享您的日志消息。
一些日志记录参考: https : //docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html
- 在Hibernate中更改外键的生成名称
- Hibernate命名查询是否是真正意义上的预编译?
- Hibernate QueryTranslatorImpl HQL AST解析性能
- 在HSQLDB 2.0.0-rc8中选择下一个序列值的“正确”方法
- JPA / Hibernate双向多对一导致StackOverflowException
- 在传统世界中需要Hibernate
- 如何实现与hibernate相等而不会失去对称属性的风险?
- java.lang.NoSuchMethodError:javax.persistence.OneToMany.orphanRemoval()
- 强制事务回滚Seam中的validation错误