我正在尝试学习Spring框架。我正在做一个简单的测试应用程序。我有一个客户端称为呼叫服务DAO
客户端如下调用服务:
XML
<bean id="myService" class="test.package.service.MyServiceImpl">
<property name="indexFilePath" value="${indexFilePath}" />
<property name="pdfFilePath" value="${pdfFilePath}" />
</bean>
爪哇
public static void main(String[] args)
{
ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
MyService myService = (MyService)context.getBean("myService");
myService.doStuff();
context.close();
}
我希望服务呼叫DAO:
XML
<bean id="trackingDAO" class="test.package.dataaccess.TrackingDAOImpl">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${trackingDb.driver}" />
<property name="url" value="${trackingDb.url}" />
<property name="username" value="${trackingDb.username}" />
<property name="password" value="${trackingDb.password}" />
</bean>
我的问题是我在同一个文件中都有这两个XML片段。所以我不知道如何访问DAO bean。当我在“主要”中仍然打开时,我不相信我可以打开相同的上下文。我应该创建第二个上下文文件吗?如果是这样,当我应该创建一个新的上下文文件时,什么是食物经验法则?我不喜欢有很多这样的想法。或者DAO应该是服务的财产?
答案 0 :(得分:1)
<bean id="myService" class="test.package.service.MyServiceImpl">
<property name="indexFilePath" value="${indexFilePath}" />
<property name="pdfFilePath" value="${pdfFilePath}" />
<property name="dao" ref="trackingDAO" />
</bean>
在您的服务中,添加dao的属性,就像您提到的那样。
public class MyServiceImpl {
....
TrackingDAO dao; //assuming thats the interface , or use Impl.
....
}
答案 1 :(得分:0)
新年!你是对的“DAO应该是服务的财产”! 而这件作品只需要一个U Spring contxt xml文件!
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${trackingDb.driver}" />
<property name="url" value="${trackingDb.url}" />
<property name="username" value="${trackingDb.username}" />
<property name="password" value="${trackingDb.password}" />
</bean>
这篇文章只需要一个U Spring contxt xml文件! 试试吧!它会运作良好!