java - @Repository dao 中的 Spring @PostConstruct 和扩展 dao 的 @Service

标签 java spring spring-boot

我的应用程序正在使用 Spring Boot(最新版本),并且具有使用 Spring(最新版本)的依赖项。 该依赖项有一个用 Dao 注释的 @Repository 类,该类将几个未注释的抽象类扩展到 JdbcDaoSupport 。 此外,此类有一个 @PostConstruct 注释的方法,用于设置数据源。

辅助 Service 类,用 @Service 注释,从 Dao 扩展。

我发现 Autowiring 的 <Service instance>.getJdbcTemplate() - 来自上述 JdbcDaoSupport 父类(super class) - 给出了 null

如果我省略 @Repository 上的 Dao 注释,则 jdbcTtemplate 已正确设置。 如果我用 Dao 注释 @Service ,也会发生同样的情况。

事实上,我可能没有出于特定目的对它们进行了注释 - 整个应用程序代码是实验性的,尽管我可以看到主服务扩展存储库(dao)的情况,而更复杂的服务可以实现它的逻辑委托(delegate)给几个 dao - 这是 Spring 禁止的还是我错过了什么?

更新

我向服务添加了 @PostConstruct 方法,但它没有被调用。

更新/2

我尝试在服务内 Autowiring dao,但得到了相同的结果;在我看来,这似乎是 @RepositoryPersistenceExceptionTranslationPostProcessor 的问题,其中后者用代理生成的 bean ( GitHub issue ) 替换了我的 bean。

最佳答案

您应该将 DAO Autowiring 到服务中,而不是扩展。

关于java - @Repository dao 中的 Spring @PostConstruct 和扩展 dao 的 @Service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60341372/

相关文章:

java - Spring Boot 中的 SOAP 客户端 stub 类问题

java - 如何在 android 中使用后台服务触发 wifi 状态更改?

java - java中的字体类引用

java - 带有项目/实体集合的 Spring Cache

java - jms queuebrowser # getEnumeration 总是获取为空

java - 如何在 Thymeleaf + Spring + Tomcat 中启用 UTF-8 支持?

Spring Cloud Kubernetes - 启用配置重新加载时 Spring boot 无法启动

Java hibernate : How to?

java - 如何将字符串转换为组件以读取值

spring - Java : GroupSequenceProvider for Validation, 对象在 getValidationGroups 方法中为空