您的位置:首页 > 编程语言 > Java开发

spring学习总结-第四讲

2016-06-23 16:31 197 查看

第四讲

1、启用Spring缓存:

在配置文件中导入cache:命名空间。

添加配置:
<cache:annotation-driven cache-manager="cacheManager" />


针对不同的缓存实现配置对应的缓存管理器。



2、EhCache的使用,添加jar包,然后配置ehcache.xml。配置beans.xml缓存区。

3、类级别:使用@Cacheable执行缓存:@Cacheable(value = “users”)

修饰类时,可控制spring在类级别进行缓存,当程序调用该类的任意方法时,只要传入的参数相同,spring就会使用缓存。(只要参数相同,方法不同也使用缓存)

此处缓存的意义是:当程序第一次调用该类的实例的某个方法时,spring缓存机制会将该方法返回的数据放入指定的缓存区——就是Value属性指定的缓存区。

4、类级别的缓存默认以所有的方法参数作为key来缓存方法返回的数据,同一个类不管调用哪个方法,只要调用方法的参数相同,spring就会直接使用缓存区中的数据。

5、当然我们可以指定@Cacheable的属性:

Value:必需属性。可指定多个缓存区的名字,将返回值放入指定的缓存区。

Key:通过SpEL表达式显示指定缓存的key。

Condition:指定一个返回boolean值的SpEL表达式,只有当表达式返回true时,spring才会缓存方法返回值。

Unless:指定一个返回boolean值的SpEL表达式,只有当表达式返回true时,spring就不会缓存方法返回值。

6、方法级别的缓存:使用@Cacheable执行缓存:@Cacheable(value = “users”)

如果一个类中的两个方法指定的缓存区不一样,那么即使参数相同,也不会使用缓存。

否则,将会使用缓存。

7、清除缓存:@CacheEvict

Value:必需属性。用于指定清除哪个缓存区。

Key:通过SpEL表达式显示指定缓存的key。

Condition:指定一个返回boolean值的SpEL表达式,只有当表达式返回true时,spring才会清除缓存。

allEntries:指定是否清空整个缓存区。\beforeInvocaion:指定是否在执行方法之前清除缓存。默认是方法完成之后清除。

8、Spring事务:spring的事务策略是通过platformTransactionManager接口体现的,该接口时Spring事务策略的核心。提供了三个抽象方法,并且都抛出异常TransactionException:

TransactionStatus getTransaction(TransactionDefinition definition)//平台无关的获得事务的方法

Void commit(TransactionStatus status)//平台无关的事务提交的方法

Void rollback(TransactionStatus status)//平台无关的事务回滚的方法

9、Spring的事务机制是一种典型的策略模式,它只代表接口,不知道底层的具体管理事务过程。

10、TransactionDefinition 接口定义了一个事务规则:

事务隔离:当前事务与其他事务的隔离程度。

事务传播:在事务中执行的代码都会在当前事务中执行。

事务超时:事务在超时之前能运行多久。

只读状态:只读事务不修改数据。

11、TransactionStatus 代表了事务本身,它提供了简单的控制事务执行和查询事务状态的方法,这些方法在所有API中都是相同的。

Boolean isNewTransaction()//判断事务是否为新建的事务

Void setRollbackOnly()//设置事务回滚

Boolean isRollbackOnly()//查询事务是否已有回滚标志

12、使用@Transactional

该注解可以用于修饰spring bean类,也可以修饰bean类中的某个方法。

修饰类时,表示事务设置对整个bean类起作用;修饰方法时,表示事务设置对该方法起作用。

属性有:

isolation:用于指定事务的隔离级别。默认为底层事务的隔离级别。

noRollbackFor:指定遇到特定异常时强制不回滚事务。

noRollbackForClassName:指定遇到特定的多个异常时强制不回滚事务。

propagation:指定事务传播行为。

readOnly:指定事务是否只读。

rollbackFor:指定遇到特定异常时强制回滚事务。

rollbackForClassName:指定遇到特定的多个异常时强制回滚事务。

timeout:指定事务的超时时长。

参考资料

轻量级Java EE企业应用实战(第4版)

备注

转载请注明出处:http://blog.csdn.net/wsyw126/article/details/51744717

作者:WSYW126

可以访问我的个人网站:http://wsyw126.cc/wiki/Spring/,查看关于Spring系列的gitBook形式的文档。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring