我有一个名为com.example.service
的包,在我的Spring Configuration类中,我有一个注释@ComponentScan({"com.example.service"},{"com.example.controller"})
。
当我尝试@Autowire
服务时,代码编译失败并带有NoSuchBeanDefinitionException
。 MyService界面注释为@Service
。
目前我使用了一个非常难看的解决方法,并在我的ExampleConfig.java中声明每个服务bean,如
@Bean
public MyService myService() {
return new MyServiceImpl();
}
通常@ComponentScan
似乎有效,如果删除控制器包,则找不到控制器。我理解错了什么?如果我遗漏了任何相关信息,请告诉我。
答案 0 :(得分:3)
MyService接口使用@Service
注释
您必须注释接口的实现。不是界面本身。
答案 1 :(得分:0)
尝试使用ComponentScan
注释的以下代码扫描多个包:
@ComponentScan({"com.example.service","com.example.controller"})
而不是
@ComponentScan({"com.example.service"},{"com.example.controller"})
@ComponentScan使用字符串数组扫描多个基本包。