|
ON_REQUIRED
com.springbook.RentABike.*=PROPAGATION_REQUIRED,readOnly
</value>
</property>
</bean>
代理: <bean id="rentaBike" class="org.springframework.aop. framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.springbook.RentABike</value>
</property>
<property name="interceptorNames">
<value>transactionInterceptor,rentaBikeTarget</value>
</property>
</bean>
注意,有3种不同的bean:代理、目标和拦截器。代理将调用POJO以及POJO所需的任何服务。拦截器包含用于调用服务的结合代码(glue code),还指定了如何处理目标中的每个方法。任何需要访问RentaBike的人都要调用代理,而代理调用事务拦截器,然后事务拦截器就会开始一个事务并调用目标(POJO)。目标完成自己的工作,返回给(负责提交事务的)拦截器,然后再返回给代理和代理的调用者。
 图1. 正在进行的POJO编程
您在POJO之外构建程序并对其进行配置,而余下的工作就交给Spring。我是一名POJO程序员。
3.依赖注入有助于可测试性
通过一种称为依赖注入(Dependency Injection,DI)的设计模式,Spring极大地提高了可测试性。当客户依赖于某种依赖性(我们将称之为一个服务)时,您将创建客户的一个属性。Spring将创建客户和服务,然后把客户的属性设置为服务的值。换言之,Spring负责管理上下文中bean的生命周期,并解决依赖性。下面给出一个依赖注入的例子,没有使用Spring。我们首先来看客户(应用程序的基本元素): public class CommandLineView {
private RentABike rentaBike;
public CommandLineView上一页 [1] [2] [3] [4] [5] [6] 下一页
|