java - 将子包移动到新包后@Autowire 不起作用

标签 java spring hibernate

我的 Spring 应用程序中有两个基本包 - com.company.myappmonitorcom.company.myappcommon

com.company.myappmonitor内部,我有子包com.company.myappmonitor.daocom.company.myappmonitor.repository

我使用 Intellij Refactor > Move 将 com.company.myappmonitor.daocom.company.myappmonitor.repository 移动到 com.company.myappcommon - 所以它们现在位于 com.company.myappcommon.daocom.company.myappcommon.repository 。我能够成功构建 Spring 应用程序。

一旦我将这些子包移动到 com.company.myappcommon - 我收到错误消息,表明我的一个 @Autowired 注释不再起作用。错误是

***************************
APPLICATION FAILED TO START
***************************

Description:

Field myVersionsRepository in com.company.myappmonitor.service.myVersionsServiceImpl required a bean of type 'com.company.myappcommon.repository.myVersionsRepository' that could not be found.


Action:

Consider defining a bean of type 'com.company.myappcommon.repository.myVersionsRepository' in your configuration.

@Autowired 在我移动 dao 和存储库子包之前正在工作。

我正在使用 Spring java 配置和注释在 Spring 上下文中设置我的服务。我的 myVersionsRepository 看起来像

package com.company.myappcommon.repository;

import ...

@Transactional
@Repository
public interface myVersionsRepository extends CrudRepository<myVersions, String>, myVersionsRepositoryCustom {

我的 myVersionsServiceImpl 看起来像

package com.company.myappmonitor.service;

import ...

@Service(value = "myVersionsServiceImpl")
public class myVersionsServiceImpl implements myVersionsService {

    @Autowired
    myVersionsRepository myVersionsRepository;

我的配置类看起来像

package com.company.myappmonitor.config;

import ...

@Configuration
@PropertySource("classpath:application.properties")
@ComponentScan("com.company")
public class AppConfig {

我认为这是我的 @ComponentScan basePackages 的问题。我试过了

@ComponentScan("com.company")
@ComponentScan("com.company.myappmonitor", "com.company.myappcommon")
and
@ComponentScan(basePackages = {"com.company.myappmonitor", "com.company.myappcommon"})

这些都不起作用。有什么想法为什么我会收到此错误吗?谢谢!

最佳答案

尝试将“com.company.myappcommon.*”添加到您的 compontScan 基本包中。如:

@ComponentScan(basePackages={"com.company.myappcommon.*","com.company"})
public class AppConfig{
...
}

关于java - 将子包移动到新包后@Autowire 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44316364/

相关文章:

java - Spring Boot - @ConditionalOnExpression 用于 @RestController

spring - MockBean stub 无效

Spring Eureka要求用户名密码认证

Java:在 Apache Wicket Web 应用程序中将文本复制到剪贴板

java - 通过接口(interface)打破 Python 中的循环依赖

java - 如何使用 SimpleDateFormat 转换日期?

java - 通过数据属性使用 javax.persistence.criteria 从结果集中删除重复项

java - 线程中的异常 "main"org.hibernate.MappingException : Association references unmapped class hibernate

java - MMO java引擎的概念设计

java - 在android中生成0到3之间的随机数并添加到数组列表中