spring注解说明

spring配置方式:主要由注解和xml方式,当项目比较复杂时如果用xml的方式会出现大量的xml文件,有些繁琐所以用注解的方式还是相当简便的。
先从传统的spring***的依赖注入,IOC,AOP开始讲起*

<!-- 开始扫 @Compoent, @service, @Controller,@repository 并 相关的标签 将这些类实例化
        相当于在 <bean id="" class=""></bean>
     -->
     <context:component-scan base-package="com.mvc" />

实例化这些bean以后怎么注入呢?我们在xml中有2中配置方式构造器注入和set方法注入,spring注解提供2个注入标签
@autowired和@resource @autowired是根据类型进行注入,而@resouce直接根据名称来进行注入
例如:

@Autowired
//@Resource(name="userDao")
private UserDao dao ;

dao层会用到哪些注解呢

@Responsity用来标记dao的代码(dao有时配置比较麻烦有时我也会使用xml来配置这一层),在结合前面的 autowired,resource 标签

service层用的相关标签

service层用到@service来进行标记这一层,这一层会需要配置事物相关的信息所以说一下,事物相关的配置

spring的事物处理

事物处理一般需要在xml里面进行配置一些信息。

不同的方式连接数据库,java的事物配置主要都是检查数据库与javaweb的会话,hibernate会提供一个sessionfactory把hibernate的事物配置到这个里面就可以了,mybatisy也会有sqlsessionfactory同样的方式也是可以的

先在xml里面配置如下:

<tx:annotation-driven transaction-manager="txManager" />

在service类里面:

事物信息:
事物传播行为介绍:
@Transactional(propagation=Propagation.REQUIRED)
如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)
@Transactional(propagation=Propagation.NOT_SUPPORTED)
容器不为这个方法开启事务
@Transactional(propagation=Propagation.REQUIRES_NEW)
不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
@Transactional(propagation=Propagation.MANDATORY)
必须在一个已有的事务中执行,否则抛出异常
@Transactional(propagation=Propagation.NEVER)
必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反)
@Transactional(propagation=Propagation.SUPPORTS)
如果其他bean调用这个方法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.

事物超时设置:
@Transactional(timeout=30) //默认是30秒

事务隔离级别:
@Transactional(isolation = Isolation.READ_UNCOMMITTED)
读取未提交数据(会出现脏读, 不可重复读) 基本不使用
@Transactional(isolation = Isolation.READ_COMMITTED)
读取已提交数据(会出现不可重复读和幻读)
@Transactional(isolation = Isolation.REPEATABLE_READ)
可重复读(会出现幻读)
@Transactional(isolation = Isolation.SERIALIZABLE)
串行化

MYSQL: 默认为REPEATABLE_READ级别
SQLSERVER: 默认为READ_COMMITTED

脏读 : 一个事务读取到另一事务未提交的更新数据
不可重复读 : 在同一事务中, 多次读取同一数据返回的结果有所不同, 换句话说,
后续读取可以读到另一事务已提交的更新数据. 相反, “可重复读”在同一事务中多次
读取数据时, 能够保证所读数据一样, 也就是后续读取不能读到另一事务已提交的更新数据
幻读 : 一个事务读到另一个事务已提交的insert数据

未完待续。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值