我应该拆分Spring上下文文件

时间:2013-12-05 23:10:01

标签: java spring architecture

我正在尝试学习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应该是服务的财产?

2 个答案:

答案 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文件!  试试吧!它会运作良好!