标签:
控制反转(IoC)是一个通用的概念,它可以用许多不同的方式去表达,依赖注入仅仅是控制反转的一个具体的例子。
当编写一个复杂的 Java 应用程序时,应用程序类应该尽可能的独立于其他的 Java 类来增加这些类可重用额可能性,当进行单元测试时,可以使它们独立于其他类进行测试。依赖注入(或者有时被称为配线)有助于将这些类粘合在一起,并且在同一时间让它们保持独立。
到底什么是依赖注入?让我们将这两个词分开来看一看。这里将依赖关系部分转化为两个类之间的关联。例如,类 A 依赖于类 B。现在,让我们看一看第二部分,注入。所有这一切都意味着类 B 将通过 IoC 被注入到类A 中。
<context:component-scan base-package="com.xx"/>。除此之外,还需要给类标上注解:@Controller,@Repository,@Service等。(Bean ID默认为类名)Spring 框架的一个关键组件是 面向方面的编程(AOP)框架。面向方面的编程需要把程序逻辑分解成不同的部分称
为所谓的关注点。跨一个应用程序的多个点的功能被称为 横切关注点,这些横切关注点在概念上独立于应用程序
的业务逻辑。有各种各样的常见的很好的方面的例子,如日志记录、审计、声明式事务、安全性和缓存等。

<aop:config>声明一个方面<aop:aspect id="myAspect" ref="aBean">声明切入点<aop:pointcut id="businessService"expression="execution(* com.xyz.myapp.service.*.*(..))"/>声明切入的通知(前置 后置 环绕等)<!-- a before advice definition --><aop:before pointcut-ref="businessService"method="doRequiredTask"/><!-- an after advice definition --><aop:after pointcut-ref="businessService"method="doRequiredTask"/></aop:aspect></aop:config><bean id="aBean" class="...">...</bean>
事务的概念可以描述为具有以下四个关键属性 ACID:
局部事务是特定于一个单一的事务资源,如一个 JDBC 连接,而全局事务可以跨多个事务资源事务,如在一个分布式系统中的事务。
声明式事务管理可以使用 AOP 方法进行模块化
<tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="create"/></tx:attributes></tx:advice><aop:config><aop:pointcut id="createOperation"expression="execution(*com.tutorialspoint.StudentJDBCTemplate.create(..))"/><aop:advisor advice-ref="txAdvice" pointcut-ref="createOperation"/></aop:config><!-- Initialization for TransactionManager --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><!-- Definition for studentJDBCTemplate bean --><bean id="studentJDBCTemplate"class="com.tutorialspoint.StudentJDBCTemplate"><property name="dataSource" ref="dataSource" /></bean>
但是可以更简化
<!-- 注解驱动事务管理--><tx:annotation-driven transaction-manager="txManager"/>
添加后Spring检查上下文所有的Bean,找出使用注解@Transactional的Bean,tx:annotation-driven自动为之添加事务,事务的属性通过来@Transactional的参数定义的
标签:
原文地址:http://www.cnblogs.com/hmaccelerate/p/5371158.html