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形式的文档。
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring AOP动态代理-切面
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- 模拟Spring的简单实现
- Spring整合WebSocket应用示例(上)
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- 监听器获取Spring配置文件的方法
- Java利用Sping框架编写RPC远程过程调用服务的教程
- springmvc 发送ajax出现中文乱码的解决方法汇总
- SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
- 详解Java的MyBatis框架和Spring框架的整合运用
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao