我尝试了很多,然后发现我没有autowire = "byName"
在 bean 中使用,这就是它没有自动写入的原因。
1)我想问一下使用@Resource的情况是否相同。我的意思是我需要为此在 bean 中编写 autowire
2)但在某些文件中@Resource 无需在 bean 中编写 autowire 即可工作
当你按名称自动装配时(默认是在@Autowired 注解中按类型),那么它和@Resource 之间基本上没有区别。您可以选择在 xml 中定义那些自动装配的 bean,或者您只需添加
<context:component-scan base-package="service"/>
到您的 application-context.xml,其中 service(例如)是您的包,用于告诉 spring 在哪里扫描项目中的注释。然后它会自动找到那些带注释的类(在那个包中)。
注释不使用@Resource
自动装配,因为您指定了要装配的资源的名称。因此您不需要在 bean 上指定任何特定的自动装配值。
即使您使用@Autowire
注释,也不需要设置autowire
属性。您使用属性或注释,但不需要两者。
我想问一下使用@Resource 的情况是否相同。我的意思是我需要为此在 bean 中编写 autowire
效果基本相同。@Resource
它在javax
包装中提供了与弹簧的解耦。@Resource
也相当于@Autowired
结合使用@Qualifier
但是在某些文件中,@Resource 无需在 bean 中编写 autowire 即可工作
是的,它就是这样工作的。它"autowire"-by-name
在应用时就像@Resource("someBean")
不管任何值autowire = "byName"
。