er 对象定义另一个 Bean。在此,将告诉 Spring 容器在运行时把 DAO 对象注入到 PhonebookDataProvider 中。
正如 清单 6 所示,Spring 允许 实现所有这些组件之间的最大解耦 —— 而且会透明地进行。这让测试变得简单,也使动态更 改或添加其他组件变得更为轻松。假设需要使用不同的 DataSource,只需更改该 Bean 中的配置,该 Bean 就会使用新配置 —— 而根本不需要触及任何代码!
很棒,对不对?
清 单 6. 通过 Spring 容器为依赖性注入定义 DataSource 和其他 Bean
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<! --
- Application context definition for "phonebook" application.
-->
<beans>
<!-- Bean Definitions required for data access using Spring Jdbc DAO
Support -->
<bean id="pbJdbcDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
destroy- method="close">
<property
name="driverClassName"><value>org.apache.derby.jdbc.EmbeddedDriv
er</value></property>
<property
name="url"><value>jdbc:derby:phonebook</value>
</property>
<property
name="username"><value>APP</value></property>
<property
name="password"><value></value></property>
</bean>
<bean id="phonebookDao"
class="phonebook.dao.jdbc.PhonebookJdbcDao">
<property name="dataSource">
<ref local="pbJdbcDataSource"/>
</property>
</bean>
<bean id="phonebookJdbcDataProvider"
class="phonebook.dao.PhonebookDataProvider">
<property name="pbDao">
<ref local="phonebookDao"/>
</property>
</bean>
</beans>
Apache Geronimo和Spring框架,第3部分: 集成DAO与ORM(11)
时间:2011-10-13 IBM Arun Chhatpar
让 web.xml 识别 Application Context
由于应用程序正在应 用服务器内运行,因此需要对其 web.xml 文件做一些更改,以便让它能够识别 ApplicationContext.xml 配置文件。
可以使用 Spring 的 ContextLoaderListener 来完成此项任务,并按照 Geronimo 应 用服务器的规则在 web.xml 中添加新的侦听程序。清单 7 展示了定义此侦听程序的 XML。
清单 7. 向 web.xml 中添加新的侦听程序
<listener>
<listener- class>org.springframework.web.context.ContextLoaderListe
ner</listener- class>
</listener>
<context-param>
<param- name>contextConfigLocation</param-name>
<param-value>/WEB- INF/ApplicationContext.xml
</param-value>
</context- param>
在 JDBC/DAO 的顶部定义 PhonebookDataProvider 服务
PhonebookDataProvider 类汇集了上述所有内容(参见 清单 8)。它还是由客户机 |