当前位置: 首页 > 知识库问答 >
问题:

Spring:将DAO自动绑定到一个实用程序类不起作用

楚俊逸
2023-03-14

我有一个注释驱动的Spring mvc 项目,在 JBoss 网络 mvc 示例之后模板化。(Spring,冬眠,JPA 2.0)

我有一个实用程序包,我想在其中为明显的实用程序函数放置可重用的类。具体来说,我有一个LogonU实用程序类,我想在其中查询数据库以获取信息。

我在那里自动连接我的DAO,但是当我调试时,DAO总是为空并且失败,有那个例外。

我已经阅读并尝试了很多东西——我知道我可能已经找到了解决方案——但是错过了一些东西,继续前进并尝试其他东西。我可能没有搜索到正确的术语,因为注释对我来说是新的。(我和Spring一起工作过

我已将其添加到applicationContext.xml中

<context:component-scan base-package="util"/>

我以为这就是我需要做的一切。

这就是我目前在LogonNutibility类中的功能-但它不起作用,关键字DAO总是空的。我想如果我将DAO连接到applicationContext中的LogonNuability bean(旧方法),我可能会让它工作,但我认为有一种更好的方法可以使用注释。

@Service    
public class LogonUtilities {

    @Autowired private KeywordDao keywordDao; 

我的应用程序不是全新的,我现在可能有十个工作控制器和十几个工作DAO,包括一个关键字控制器和一个已经执行CRUD操作的DAO,所以我不认为我的设置不正确。我只是想重用一些从数据库中提取的代码。

提前致谢。

*在我的代码中,它实际上被称为“TrainingKeyword”,而不是“Keyword”。这是空指针错误,因为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");

共有3个答案

邰勇军
2023-03-14

确保基本包是从根目录开始的服务的完全限定路径,并确保KeywordDao使用@Repository

邰棋
2023-03-14

您正在尝试执行@Autowired private KeywordDao KeywordDao 但您没有得到任何自动布线错误。但是默认情况下,@Autowired@Autowired(required=true),这意味着默认情况下这些依赖项是强制性的,如果不满足,则抛出错误。

没有收到任何自动装配错误,因此结论是,似乎根本没有扫描该类进行自动装配。

如果会,则会抛出错误。尝试查看为什么类没有自动装配,以下是一些常见原因:

>

  • 放置类的包未被扫描,类包的名称是util还是子包?

    扫描在错误的spring上下文中进行。大多数Spring应用程序有两个上下文,一个根上下文和一个servlet dispatcher上下文。尝试移动组件扫描<代码>

  • 欧阳成弘
    2023-03-14

    我通过倾听你的想法和这个问题的帮助解决了我的问题。JPA 不是自动布线

    基本上,我已经尝试了所有有效的方法 - 但从来没有一起尝试过。我不断地对我的代码进行编辑,试图让它工作,但总是有一些东西丢失或一些不好的东西。对于有类似问题的任何人来说,这是步骤

    在我的登录过滤器中,我添加了

     @Autowired private LogonUtilities lu
    

    在我的LogonUtilites类中,我添加了

    @Autowired private TrainingKeywordDao keywordDao;
    

    没有必要在我的applicationContext中添加LogonNuttility bean——我把它去掉了,它仍然有效。

    谢谢你所有的帮助——你的想法不断让我重新思考我在做什么。

     类似资料:
    • 我试图将注释字段从我的类移动到另一个我用注释的类中。当字段位于实体中时,Hibernate将发出正确的INSERT语句。将字段移动到类时,不会生成INSERT语句。 所以这工作: 但这并没有: 保存实例(并刷新EntityManager)时,没有例外。如果我禁用在Flyway中创建适当的表,Hibernate验证会触发“缺少表[my_entity_doubles]”错误,因此Hibernate似乎

    • 我正在创建一个Spring启动应用程序,它也为外部库的一个类创建bean,这个外部java bean需要java.util.properties作为构造函数参数之一。虽然我可以使用配置Propety与前缀从Spring引导加载的属性文件读取属性并将其转换为java.util.properties.但是,我不希望在属性文件中有任何额外的前缀环境或属性来源java.util.properties 这是

    • 我创建了一个带有mojs的简单javascript应用程序,一个动画库,并希望将其部署到heroku。首先,我尝试“heroku create”等并将原始应用程序部署到heroku - 该应用程序可以访问,但脚本不起作用。其次,我尝试通过插入脚本引导标记来更改我按照 heroku 网站上的 Node.js 教程制作的应用程序 将我制作的脚本复制到此应用程序的文件夹中 然后运行“npm 安装 moj

    • 也许是基于代码创建的队列,它由其他现有队列支持?

    • 我正在尝试创建一个带有自定义注释和spring AOP的Spring Boot库。当我将这个库与新的spring boot应用程序一起使用时。那么它就不起作用了。就连我也没有任何错误。 库示例- 自定义注释 SpringAOP课程 波姆。xml 使用mvn clean install创建库 现在,新的库被导入到springboot应用程序中。 控制器中使用了新的自定义注释 控制器 请帮忙。

    • 我面临的问题,以开发一个演示JavaFX程序的图像查看作为一个新手。这里,我在BorderPane中心位置有一个ImageView,它用StackPane和VBox包装。其中StackPane总是与VBox一起增长,我将ImageView与StackPane Width和Height属性绑定在一起,这样当我调整窗口大小时,ImageView就会改变它的设置亮度和重量。它的工作很好,我想,但问题是,