java - 将 Spring 上下文注入(inject)非 Spring 类

标签 java spring spring-mvc

我对 Java 比较陌生,并且有 Web 背景,我发现自己正在尝试在 Spring 中实现 Web 应用程序。

主要问题是我有以下文件夹结构: enter image description here

我正在尝试将 Spring 上下文注入(inject)到 Controllers 文件夹中找到的任何类中,据我所知,这基本上意味着我的类不依赖于 Spring。

该应用程序使用 MongoDB 作为后端,我正在尝试像这样实例化上下文:

WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();

IODataInterface mongo = context.getBean(BookModel.class);

我在 context.getBean(...) 行上遇到此异常:com.web.spring.Controllers.DemoController.DemoController(DemoController.java:19)

感谢任何帮助,如果有人能够正确地向我解释实际术语,我会非常高兴,因为您可能已经猜到,我已经为具有 0 Java 工作经验的人跳入了一些非常高级的内容。

完整的异常堆栈:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

据我所知,上下文似乎已创建,但 getBean() 不起作用。我现在真的很困惑。

最佳答案

您似乎正在尝试获取模型类的实例(我想由 @Document 注释,因为您正在使用 MongoDb)。 @Document 和 JPA @Entity 注解的类实际上不是 Spring Bean。

因此,要实例化一个新模型,您只需使用 new BookModel()

PS。另外,请采用小写包/文件夹命名约定。只有类名应该以大写字母开头。

关于java - 将 Spring 上下文注入(inject)非 Spring 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42428440/

相关文章:

java - 如何将 RestTemplate 与 application/octet-stream 响应类型一起使用

java - 在 Java 单例中使用静态?

java - 将 HAR hibernate 存档迁移到 JBoss 7

java - getSystemId()的返回值

java - @Transactional 创建一个新的引用脏对象,即使它没有被修改

java - spring-mvc 中不同类的角色

java - Java 分布式系统中的线程

java - 无法使用 SMTP 在 java 中发送电子邮件,它被我办公室的防火墙阻止了。我们可以通过其他方法发送邮件吗?

spring - 如何在我的 Jetty/log4j 环境中禁用速度调试和信息日志消息?

tomcat - 带有 Thymeleaf 的 Spring MVC。更新静态数据