java - 我应该拆分 Spring 上下文文件吗

标签 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>

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/

相关文章:

java - 应用层

java - 给定场景的设计和测试方法

mysql:在大树中组织搜索

java - 具有唯一性检查的 HashMap

java - 在运行时在 java 中拖放 jcomponents

java - 在 Java 中加密/解密 "AES/ECB/PKCS5Padding"

java - 带 spring 的抽象类变量

java - 如何在没有@Id的情况下使用spring Repository?

java - org.hibernate.LazyInitializationException(Spring/Hibernate)

java - 如何在 Cloud Api Gateway 的响应正文中添加一些数据