我的 Spring 应用程序中有两个基本包 - com.company.myappmonitor
和 com.company.myappcommon
。
在com.company.myappmonitor
内部,我有子包com.company.myappmonitor.dao
和com.company.myappmonitor.repository
。
我使用 Intellij Refactor > Move 将 com.company.myappmonitor.dao
和 com.company.myappmonitor.repository
移动到 com.company.myappcommon
- 所以它们现在位于 com.company.myappcommon.dao
和 com.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/