如何修复 "Could not autowire. No beans of 'MyRepository' type found"?
How do I fix "Could not autowire. No beans of 'MyRepository' type found"?
我的项目中有这个层次结构:
▼ server
▼ myproject
▼ src
▼ main
▼ java
▼ rest
▼ repository
Ⓘ MyRepository
▶ resources
▼ test
▼ java
▼ rest
Ⓒ MyRepositoryTest
这是 MyRepository 界面:
public interface MyRepository extends MongoRepository<String, Integer> {
}
这是 MyRepositoryTest 测试 class:
@ExtendWith(SpringExtension.class)
public class MyRepositoryTest {
...
@Autowired MyRepository myRepository;
...
}
错误发生在测试中自动装配的 myRepository 实例上 class。它说 Could not autowire. No beans of 'MyRepository' type found
。我搜索了一下并尝试添加 @Component
、@Repository
等等,但没有任何帮助。我该如何解决这个问题?
您可以试试这个,将您的包设置在 class 的 @ComponentScan
AppConfig
:
@ContextConfiguration(classes = AppConfig.class)
@ExtendWith(SpringExtension.class)
public class AdminEvaluatorTest {
@Autowired MyRepository myRepository;
@Configuration
@ComponentScan("com.<your-package>")
public static class AppConfig {
}
}
您的@SpringBootApplication 下是否有@EnableAutoConfiguration class?尝试设置一下。
@SpringBootApplication
@EnableAutoConfiguration
....
public class MyProject{
public static void main(String[] args) {
SpringApplication.run(MyProject.class, args);
}
}
看起来框架没有扫描在您的应用程序中有测试 class 的包
从上面共享的层次结构来看,MyRepository 接口的包是“rest.repository”,MyRepositoryTest 的包class 是“休息”。
尝试将 MyRepositoryTest class 的包也更改为“rest.repository”。这应该可以解决问题。
我的项目中有这个层次结构:
▼ server
▼ myproject
▼ src
▼ main
▼ java
▼ rest
▼ repository
Ⓘ MyRepository
▶ resources
▼ test
▼ java
▼ rest
Ⓒ MyRepositoryTest
这是 MyRepository 界面:
public interface MyRepository extends MongoRepository<String, Integer> {
}
这是 MyRepositoryTest 测试 class:
@ExtendWith(SpringExtension.class)
public class MyRepositoryTest {
...
@Autowired MyRepository myRepository;
...
}
错误发生在测试中自动装配的 myRepository 实例上 class。它说 Could not autowire. No beans of 'MyRepository' type found
。我搜索了一下并尝试添加 @Component
、@Repository
等等,但没有任何帮助。我该如何解决这个问题?
您可以试试这个,将您的包设置在 class 的 @ComponentScan
AppConfig
:
@ContextConfiguration(classes = AppConfig.class)
@ExtendWith(SpringExtension.class)
public class AdminEvaluatorTest {
@Autowired MyRepository myRepository;
@Configuration
@ComponentScan("com.<your-package>")
public static class AppConfig {
}
}
您的@SpringBootApplication 下是否有@EnableAutoConfiguration class?尝试设置一下。
@SpringBootApplication
@EnableAutoConfiguration
....
public class MyProject{
public static void main(String[] args) {
SpringApplication.run(MyProject.class, args);
}
}
看起来框架没有扫描在您的应用程序中有测试 class 的包
从上面共享的层次结构来看,MyRepository 接口的包是“rest.repository”,MyRepositoryTest 的包class 是“休息”。
尝试将 MyRepositoryTest class 的包也更改为“rest.repository”。这应该可以解决问题。