我需要将外部lib类连接到我的bean,以便将其用作单例 .xml config:
<bean id="myBean" class="com.my.MyBean">
<property name="someLib" value="com.ExternalBean" />
</bean>
java bean:
@Service
public class MyBean {
@Autowired
private ExternalBean externalBean;
public void setExternalBean(ExternalBean externalBean) {
this.externalBean = externalBean;
}
此外,我在公共方法中使用有线变量externalBean
,以便不在每个方法调用中实例化它。
问题在于null
。
我是否正确连接bean?错误是什么。
答案 0 :(得分:5)
您必须将外部类定义为bean才能使@Autowired工作。
<bean id="externalBean" class="some.external.package.ExternalBean">
</bean>
<bean id="myBean" class="com.my.MyBean">
</bean>
另外,如果您使用@Autowired,则不需要它的设置器。
答案 1 :(得分:1)
loodakrawa是对的。可能导致问题的第二件事是,你有一个myBean
的xml bean声明,另外用@Service
注释了bean。我想这会在使用启用组件扫描后立即引起麻烦。
答案 2 :(得分:1)
我认为更好的ide是使用上下文路径扫描:
<context:component-scan base-package="some.external.package">
</context:component-scan>
确保所有这些类都在包中。然后使用其中一个注释(@Repository, @Service, @Component
)标记两个类。
其中一个好处,不需要制定人。
P.S:如果您使用扫描库,则不需要将类声明为bean,注释就足够了