使用 Spring 3.2.1.RELEASE,groovy 1.8.8,以下行为不像我预期的那样。我已经省略了很多代码。如果这还不够,我将整理一个(不)工作的完整示例。
时髦的豆子:
package foo
import javax.annotation.Resource
class SomeBean {
@Resource
String someProp
}
春天的xml:
<context:annotation-config />
<context:component-scan base-package="other.packages.not.foo" />
<bean id="someBean" class="foo.SomeBean">
<property name="someProp" value="bar" />
</bean>
这将失败,并出现关于无法找到满足 String 属性的 bean 的错误。为了解决这个问题,我最终这样做了:
时髦的豆子:
@Resource( name = 'someProp' )
String someProp
春天的xml:
<bean id="someProp" class="java.lang.String">
<constructor-arg value="bar" />
</bean>
<bean id="someBean" class="foo.SomeBean" />
我不喜欢这个解决方案,因为它将 bean 源代码耦合到 spring 配置,这是错误的耦合方向。它为一个简单的字符串创建了一个不必要的 bean。我错过了一个明显的解决方案吗?