Spring @ComponentScan for @Service

时间:2014-11-04 08:11:55

标签: java spring spring-mvc autowired

我有一个名为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似乎有效,如果删除控制器包,则找不到控制器。我理解错了什么?如果我遗漏了任何相关信息,请告诉我。

2 个答案:

答案 0 :(得分:3)

  
    

MyService接口使用@Service

注释   

您必须注释接口的实现。不是界面本身。

答案 1 :(得分:0)

尝试使用ComponentScan注释的以下代码扫描多个包:

@ComponentScan({"com.example.service","com.example.controller"})

而不是

@ComponentScan({"com.example.service"},{"com.example.controller"})

@ComponentScan使用字符串数组扫描多个基本包。