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