你的配置看起来是这样的:
<bean id="daoConfig1" class="com.foo.dao.DAOConfig">
<property name="dbUrl" value="jdbc://urlForDao1" />
...
</bean>
<bean id="dao1" class="com.foo.dao.DAO1">
<constructor-arg ref="daoConfig1" />
</bean>
<bean id="business1" class="com.foo.service.Business1">
<property name="dao" ref="dao1" />
</bean>
<bean id="daoConfig2" class="com.foo.dao.DAOConfig">
<property name="dbUrl" value="jdbc://urlForDao2" />
...
</bean>
<bean id="dao2" class="com.foo.dao.DAO2">
<constructor-arg ref="daoConfig2" />
</bean>
<bean id="business2" class="com.foo.service.Business2">
<property name="dao" ref="dao2" />
</bean>
或者共享一个daoConfig
实例的所有daoX
豆之间,如果这就是你想要的。
然后可以使用如下因素来处理业务逻辑:
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"beans.xml"});
Business1 b1 = (Business1) context.getBean("business1");
b1.doStuff();
或者更好的是,使用类似Spring MVC的,可以电汇业务豆到您的控制器,而无需调用getBean()
。
尝试过注释? – 2012-02-20 14:07:36
如果你正在做新的MyDAO(),那么你不会让Spring构造对象,所以Spring不能向对象中注入任何东西。您需要在业务类实例中注入DAO。 – 2012-02-20 14:12:06
@JB Nizet这是我的困境的一部分,如果我在业务类中注入DAO,我应该如何构建业务类?商业类也是由全新的运营商构建的。 – davidmontoyago 2012-02-20 14:25:18