0

我尝试了很多,然后发现我没有autowire = "byName"在 bean 中使用,这就是它没有自动写入的原因。

1)我想问一下使用@Resource的情况是否相同。我的意思是我需要为此在 bean 中编写 autowire

2)但在某些文件中@Resource 无需在 bean 中编写 autowire 即可工作

4

3 回答 3

1

当你按名称自动装配时(默认是在@Autowired 注解中按类型),那么它和@Resource 之间基本上没有区别。您可以选择在 xml 中定义那些自动装配的 bean,或者您只需添加

<context:component-scan base-package="service"/>

到您的 application-context.xml,其中 service(例如)是您的包,用于告诉 spring 在哪里扫描项目中的注释。然后它会自动找到那些带注释的类(在那个包中)。

于 2011-03-29T12:13:10.337 回答
0

注释不使用@Resource自动装配,因为您指定了要装配的资源的名称。因此您不需要在 bean 上指定任何特定的自动装配值。

即使您使用@Autowire注释,也不需要设置autowire属性。您使用属性注释,但不需要两者。

于 2011-03-29T12:05:03.983 回答
0

我想问一下使用@Resource 的情况是否相同。我的意思是我需要为此在 bean 中编写 autowire

效果基本相同。@Resource它在javax包装中提供了与弹簧的解耦。@Resource也相当于@Autowired结合使用@Qualifier

但是在某些文件中,@Resource 无需在 bean 中编写 autowire 即可工作

是的,它就是这样工作的。它"autowire"-by-name在应用时就像@Resource("someBean")不管任何值autowire = "byName"

于 2011-03-29T12:05:51.700 回答