spring的作用
-
spring主要包括IOC和AOP,IOC依赖注入(控制反转)很好的解决了代码的硬编码耦合问题,通过配置文件注入对象的方式实例化,扩展性更强。
-
AOP面向切面编程的思想在一个业务流程中通过动态代理动态的将操作织入到流程中,减轻了编码程度,可配置性和扩展性高,提高代码重复可用度。
spring的事物隔离级别
在Spring中定义了5中不同的事务隔离级别:
-
ISOLATION_DEFAULT(一般情况下使用这种配置既可)
这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。
-
ISOLATION_READ_UNCOMMITTED
这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。大部分数据库缺省的事物隔离级别都不会出现这种状况。
-
ISOLATION_READ_COMMITTED
保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。 -
ISOLATION_REPEATABLE_READ
这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。 -
ISOLATION_SERIALIZABLE
这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读外,还避免了幻读。
事物的传播特性
-
Required——t1无事物则t2开启新事物,t1有事物则t2也用t1事物
-
RequiredNew——t1无事物则t2开启新事物,t1有事物t2仍然开启t2事物
-
Supports——t1无事物则t2也不开启事物,t1开启事物则t2使用t1事物
-
Mandatory——t1无事物t2则报错 ,t1有事物则t2也用t1事物
-
NotSupport——t1无事物则t2也无事物,t1有事物t2也无事物
-
Never——t1无事物则t2也无事物,t1有事物则t2也报错
Bean 的作用域
<bean scope=”singleton”> </bean>
-
Singleton——当 ApplicationContext 初始化时,容器会自动初始化所有 singleton每次程序向 Spring 容器请求是, Spring 容器总是返回最开始创建的对象
-
Prototype——每次程序向 Spring 容器请求是, Spring 容器会临时去创建 prototype bean
-
Request——要在 web 应用才有效,每个用户请求
-
Session——要在 web 应该有才有效,每个用户会话
-
Global session——仅在 portlet context 才有效
spring的事务如何配置
1.配置sessionFactory
<!-- 配置sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>/WEB-INF/classes/hibernate.cfg.xml</value>
</property>
</bean>
2. 配置事务管理器
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager”>
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
3. 配置事务特性
<tx:adviceid="txAdvice"transactionmanager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
欢迎工作一到五年的Java工程师朋友们加入Java架构开发:828545509
群内提供免费的Java架构学习资料
(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka
,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己
每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!