我正在尝试学习Spring框架。我正在制作一个简单的测试应用程序。我有一个调用服务的客户端,该服务调用 DAO。
客户端像这样调用服务:
XML
<bean id="myService" class="test.package.service.MyServiceImpl">
<property name="indexFilePath" value="${indexFilePath}" />
<property name="pdfFilePath" value="${pdfFilePath}" />
</bean>
Java
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。我不相信当它仍然在“main”中打开时我可以打开相同的上下文。我应该创建第二个上下文文件吗?如果是这样,当我应该创建新的上下文文件时,食物的经验法则是什么?我不喜欢拥有很多这样的想法。或者也许 DAO 应该是服务的属性(property)?
最佳答案
<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.
....
}
关于java - 我应该拆分 Spring 上下文文件吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20412724/