1.配置文件转换成对应的注解形式
<bean id="exampleBean" factory-bean="serviceLocator" factory-method="createInstance"/>
在 @Confiuration 的类直接使用 @Bean...
@Confiugration
public class AppConfig{
@Bean
Instance yourInstance(){
return InstanceFactory.createInstance();
}
}
2.
Spring的DAO被强制用接口的原因
Spring IOC本身是不会强制基于接口的,但DAO类一般要使用Spring的声明式事务机制,而声明式的事务机制是使用Spring AOP来实现的。Spring AOP的实现机制包括动态代理和Cgilib2,其中Spring AOP默认使用的Java动态代理是必须基于接口,所以就要求基于接口了。
注意:如果有时需要对多个dao进行事物的一致性处理(有一个dao操作失败时,要进行全部回滚),可能会将事物作用于service方法上,所以这时如果是使用spring AOP的声明式事物处理的话就也会使用java动态代理的方式。即也许要service是基于接口编程的。
解决办法就是:让事物代理使用CGlib的形式。
<bean class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
id="baseService" abstract="true">
<property name="transactionManager" ref="transactionManager"/>
<property name="proxyTargetClass" value="true"/>
</bean>
3.spring本身是个容器,管理着注入容器的组件。但是实例话这些组件并非是通过new关键字的,而是通过反射。Class.forName()
4.spring aop配置实例
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="allManagerMethod"
expression="execution(* byd.service.impl.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod" />
</aop:config>
5.事物的传播性
常见的事物传播规则有如下几种:
1).PROPAGATION_MANDATORY: 要求调用该方法的线程必须处于事务环境中,否则抛出异常;
2).PROPAGATION_NESTED:如果执行该方法的线程已处于事务环境下,依然启动新的事务,方法在嵌套的事务里执行。如果执行该方法的线程并未处于事务中,也启动新的事务,然后执行该方法,此时与 PROPAGATION_REQUIRED相同;
3).PROPAGATION_NEVER:不允许调用该方法的线程处于事务环境下,如果调用该方法的线程处于事务环境下,则抛出异常;
4). PROPAGATION_NOT_SUPPORTED:如果调用该方法的线程处于事务中,则先暂停当前事务,然户执行该方法;
5).PROPAGATION_REQUIRED:要求在事务环境中执行该方法,如果当前线程已处于事务中,则直接调用,然后执行该方法;
6).PROPAGATION_REQUIRES_NEW:该方法要求有一个在新的事务环境中执行,如果当前线程已处于事务中,先暂停当前事务,启动新事务后执行该方法,如果当前调用线程不处在事务中,则启动新的事务方法后执行方法;
7).PROPAGATION_SUPPORTS:如果当前执行线程处于事务中,则执行当前事务,否则不使用事务。
分享到:
相关推荐
spring 资料spring 资料spring 资料
Spring3.2 Spring4.3 Spring5.0三个版本的jar包,都是官方下载,亲测可用,放心下载。
Getting started with Spring Framework (4th Edition) is a hands-on guide to begin developing applications using Spring Framework 5. The examples (consisting of 88 sample projects) that accompany this ...
Spring源代码解析(一):Spring中的事务处理 Spring源代码解析(二):ioc容器在Web容器中的启动 Spring源代码分析(三):Spring JDBC Spring源代码解析(四):Spring MVC Spring源代码解析(五):Spring AOP获取Proxy ...
Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的云应用开发工具;Spring boot专注于快速、方便集成的单个个体,Spring Cloud是关注...
spring boot , spring cloud alibaba, spring cloub 版本选型
spring配置 spring配置 spring配置 spring配置 spring配置
spring定时器spring定时器spring定时器spring定时器spring定时器
将spring2的开发包spring.jar替换为附件中压缩文件的所有jar包,既可以将spring2.0的应用升级到spring3.0.5
spring3.1官方所有的jar包 org.springframework.aop-3.1.RELEASE.jar org.springframework.asm-3.1.RELEASE.jar org.springframework.aspects-3.1.RELEASE.jar org.springframework.beans-3.1.RELEASE.jar org....
简单的spring cloud项目,适合新手学习使用
Classes contained in spring-mock.jar: org.springframework.mock.jndi.ExpectedLookupTemplate.class org.springframework.mock.jndi.SimpleNamingContext.class org.springframework.mock.jndi....
很好的一个spring教程很好的一个spring教程很好的一个spring教程很好的一个spring教程很好的一个spring教程很好的一个spring教程很好的一个spring教程很好的一个spring教程
spring精华spring精华spring精华
spring-aop-1.1.1.jar spring-aop-1.2.6.jar spring-aop-1.2.9.jar spring-aop-2.0.2.jar spring-aop-2.0.6.jar spring-aop-2.0.7.jar spring-aop-2.0.8.jar spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-...
SPRING 笔记SPRING 笔记SPRING 笔记
spring4.x中的jar包下载,spring4.0.6下载,spring最新稳定版jar包下载 http://maven.springframework.org/release/org/springframework/spring/ 这个链接中有各种稳定版的jar包下载 目前官网上大部分都要maven下载
spring_dubbo spring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_...
Spring Boot整合Spring Batch的一个小例子,在网上发现这方面的资源比较少,特此将其上传供大家学习。
Spring2文档,Spring文档,Spring,Spring2