【发布时间】:2014-04-16 15:40:00
【问题描述】:
我有一个在 JBoss web mvc 示例之后模板化的注释驱动的 spring mvc 项目。 (春天,休眠,JPA 2.0)
我有一个实用程序包,我想在其中放置可重用的类以用于明显的实用程序功能。 具体来说,我有一个 LogonUtilities 类,我想在其中查询数据库以获取信息。
我在那里自动装配我的 DAO,但是当我调试时,DAO 总是为 null 并且由于该异常而失败。
我已经阅读并尝试了很多东西 - 我知道我可能已经找到了解决方案 - 但错过了一些东西并继续尝试其他东西。我可能没有在谷歌上搜索正确的术语,因为注释对我来说是新的。 (我使用 spring 和 hibernate 多年 - 但使用 xml)
我已将此添加到我的 applicationContext.xml 中
<context:component-scan base-package="util"/>
我认为这是我需要做的所有事情。
这是我目前在我的 LogonUtility 类中的内容 - 但它不起作用,keywordDao 始终为空。如果我将 DAO 连接到 applicationContext 中的 LogonUtility bean(旧方式),我想我可能可以让它工作,但我认为有更好的方法来使用注释。
@Service
public class LogonUtilities {
@Autowired private KeywordDao keywordDao;
我的应用程序不是全新的,此时我可能有十个工作控制器和十几个工作 DAO,包括一个关键字控制器和已经执行 CRUD 操作的 DAO,所以我不认为我的设置与这些东西有关是不正确的。 我只是想重用一些从数据库中提取的代码。
提前致谢。
*在我的代码中它实际上被称为“TrainingKeyword”而不是“Keyword” 这是 nullPointer 错误,因为 DAO 为空
10:52:07,673 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /Training/Home: java.lang.NullPointerException
at util.LogonUtilities.trainingOffices(LogonUtilities.java:59) [classes:]
at filter.LogonFilter.doFilter(LogonFilter.java:100) [classes:]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
这是发生错误的代码
//Set TrainingOffices
List<TrainingKeyword> kList1 = keywordDao.getAllTrainingKeywordsByName("Level 200 Training Offices");
【问题讨论】:
-
告诉我们你在哪里使用
LogonUtilitiesbean。 -
我的 applicationContect 中 xml 的语义不是问题。 ("/") 在结束标记之前。那是我试图让 xml 在问题中正确显示。反斜杠不在代码中。
-
什么?不,请告诉我们您在代码中使用
LogonUtilities的位置。向我们展示 NPE 的堆栈跟踪。 -
我使用 LogonUtilities 的一个地方在我的登录过滤器中,另一个在控制器中 - 我刚刚发现它可能也没有正确设置。我试图发布控制器代码,但它不会让我。基本上我只是在做一个 Autowired LogonUtilities lu;
-
发布代码时,选择所有代码并单击
{}按钮。发布堆栈跟踪,我们可以从那里开始。
标签: java spring jpa dao autowired