Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 为什么如果我不在我的服务实现中声明@Service,就不能生成@Autowired?_Spring - Fatal编程技术网

Spring 为什么如果我不在我的服务实现中声明@Service,就不能生成@Autowired?

Spring 为什么如果我不在我的服务实现中声明@Service,就不能生成@Autowired?,spring,Spring,我最近遇到了这个问题,在我所有的服务实现中,我需要使用@Service,以便以后能够自动连接它们。为什么会这样 我是否缺少配置或配置错误?据我记忆所及,这不是必须的 我对服务目录进行了组件扫描 是否有任何方法可以使用某种@ComponentScan(basePackages={“mypackage1”、“mypackage2})用于此服务,而无需将其标记为服务?当您的服务标有@service(以及@Component的任何其他扩展名)时,Spring可以通过组件扫描检测该类,并将其自动注册为@B

我最近遇到了这个问题,在我所有的服务实现中,我需要使用@Service,以便以后能够自动连接它们。为什么会这样

我是否缺少配置或配置错误?据我记忆所及,这不是必须的

我对服务目录进行了组件扫描


是否有任何方法可以使用某种
@ComponentScan(basePackages={“mypackage1”、“mypackage2})
用于此服务,而无需将其标记为服务?

当您的服务标有
@service
(以及
@Component
的任何其他扩展名)时,Spring可以通过组件扫描检测该类,并将其自动注册为
@Bean
。只有
@Bean
可以自动连接。如果没有适当的注释,Spring不会将该类注册为Bean

另一种方法是手动将服务注册为bean(在Javaconfig中)


然后,您的服务将能够
@Autowire
d,而无需对其进行适当的注释。

组件扫描用于检测使用
@COmponent
或类似
@service
@Repository
等注释进行注释的bean。如果您不放置注释,则不会将其作为组件进行提取。然后注册将其作为xml或java中的bean注册。如果我在bean中注册它们,是否必须注册它们中的每一个?不能说包中的所有类都是服务、组件或存储库?您可以指定一个包含筛选器,但为什么不简单地添加
@Service
@Bean
public MyService myService() {
  return new MyService();
}