Spring 学习笔记

一、@Autowired与@Resource区别spring

(1)@Autowired与@Resource均可以用来装配bean. 均可以写在字段上,或写在setter方法上。 
(2)@Autowired默认按类型装配(这个注解是属业spring的),默认状况下必需要求依赖对象必须存在,若是要容许null 值,能够设置它的required属性为false,如:@Autowired(required=false) ,若是咱们想使用名称装配能够结合@Qualifier注解进行使用,以下: 数据库

Java代码   收藏代码
  1. @Autowired() @Qualifier("baseDao")     
  2. private BaseDao baseDao;    

(3)@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称能够经过name属性进行指定, 
若是没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,若是注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。可是须要注意的是,若是name属性一旦指定,就只会按照名称进行装配。并发

Java代码   收藏代码
  1. @Resource(name="baseDao")     
  2. private BaseDao baseDao;   

二、Spring Bean的装配模式函数

  • no – 缺省状况下,自动配置是经过“ref”属性手动设定
  • byName – 根据属性名称自动装配。若是一个bean的名称和其余bean属性的名称是同样的,将会自装配它。
  • byType – 按数据类型自动装配。若是一个bean的数据类型是用其它bean属性的数据类型,兼容并自动装配它。
  • constructor – 在构造函数参数的byType方式。
  • autodetect – 若是找到默认的构造函数,使用“自动装配用构造”; 不然,使用“按类型自动装配”。

三、Spring MVC JAR包性能

四、Spring 事务隔离级别ui

  隔离级别是指若干个并发的事务之间的隔离程度。TransactionDefinition 接口中定义了五个表示隔离级别的常量:spa

  • TransactionDefinition.ISOLATION_DEFAULT:这是默认值,表示使用底层数据库的默认隔离级别。对大部分数据库而言,一般这值就是TransactionDefinition.ISOLATION_READ_COMMITTED。
  • TransactionDefinition.ISOLATION_READ_UNCOMMITTED:该隔离级别表示一个事务能够读取另外一个事务修改但尚未提交的数据。该级别不能防止脏读,不可重复读和幻读,所以不多使用该隔离级别。好比PostgreSQL实际上并无此级别。
  • TransactionDefinition.ISOLATION_READ_COMMITTED:该隔离级别表示一个事务只能读取另外一个事务已经提交的数据。该级别能够防止脏读,这也是大多数状况下的推荐值。
  • TransactionDefinition.ISOLATION_REPEATABLE_READ:该隔离级别表示一个事务在整个过程当中能够屡次重复执行某个查询,而且每次返回的记录都相同。该级别能够防止脏读和不可重复读。
  • TransactionDefinition.ISOLATION_SERIALIZABLE:全部的事务依次逐个执行,这样事务之间就彻底不可能产生干扰,也就是说,该级别能够防止脏读、不可重复读以及幻读。可是这将严重影响程序的性能。一般状况下也不会用到该级别。

五、Spring事务传播行为对象

      所谓事务的传播行为是指,若是在开始当前事务以前,一个事务上下文已经存在,此时有若干选项能够指定一个事务性方法的执行行为。在TransactionDefinition定义中包括了以下几个表示传播行为的常量:blog

  • TransactionDefinition.PROPAGATION_REQUIRED:若是当前存在事务,则加入该事务;若是当前没有事务,则建立一个新的事务。这是默认值。
  • TransactionDefinition.PROPAGATION_REQUIRES_NEW:建立一个新的事务,若是当前存在事务,则把当前事务挂起。
  • TransactionDefinition.PROPAGATION_SUPPORTS:若是当前存在事务,则加入该事务;若是当前没有事务,则以非事务的方式继续运行。
  • TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事务方式运行,若是当前存在事务,则把当前事务挂起。
  • TransactionDefinition.PROPAGATION_NEVER:以非事务方式运行,若是当前存在事务,则抛出异常。
  • TransactionDefinition.PROPAGATION_MANDATORY:若是当前存在事务,则加入该事务;若是当前没有事务,则抛出异常。
  • TransactionDefinition.PROPAGATION_NESTED:若是当前存在事务,则建立一个事务做为当前事务的嵌套事务来运行;若是当前没有事务,则该取值等价于TransactionDefinition.PROPAGATION_REQUIRED

相关文章
相关标签/搜索