spring 注解用法搜集

标注到类头部,将此类注册到spring来管理创建

@Repository  数据持久层
@Service    业务层Bean
@Controller  表现层Bean

@Component不推荐使用

======其他属性1
<bean name="" class=""
lazy-init=“true”  //是否延迟初始化
scope=“prototype”  //bean的生命周期
depends-on=“其他bean“ //依赖其他bean
/>

在Spring中也有相应的注解去对应
@Lazy
@Scope
@DependsOn

======其他属性2

<bean name="" class=""
init-method=“init“ //初始化方法
destroy-method=“close“ //析构方法
/>

在Spring中也有相应的Bean去对应,当然,这两个注解是jdk里内置的
@PostConstruct
@PreDestroy


==============注入==================
@Autowired 
@@Resource

根据bean 类型从spring 上下文中进行查找

1    它可以放在属性、方法和构造方法头上

2    如果某个接口的实现类在Spring容器中唯一的话,仅使用@Autowired就可以正确注入,如:
@Autowired
private SampleDao dao;

3    如果某个接口的实现类在Spring容器中不唯一
用@Qualifier来指定注入Bean的名字,如
@Autowired
@Qualifier(“sampleDaoImpl”)
private SampleDao dao;


4
@Primary在多个Bean之中指定哪个为最优先者,注意它不是跟@Autowired配合使用,而是跟@Service配合使用,如
@Service @Primary SampleDaoImpl

===================通知====================

Spring使用的AOP注解分为三个层次:
@Aspect放在类头上,把这个类作为一个切面,但是这个类一定要显式的注册在Spring容器中。
@Pointcut放在方法头上,定义一个可被别的方法引用的切入点表达式。
5种通知。 www.2cto.com
@Before,前置通知,放在方法头上。
@After,后置【finally】通知,放在方法头上。
@AfterReturning,后置【try】通知,放在方法头上,使用returning来引用方法返回值。
@AfterThrowing,后置【catch】通知,放在方法头上,使用throwing来引用抛出的异常。
@Around,环绕通知,放在方法头上,这个方法要决定真实的方法是否执行,而且必须有返回值


===================事物传播属性====================
@Transactional

  属性                     类型                 描述
  传播性                 枚举型               可选的传播设置
             Propagation
------------------------------------------------------------- 
  隔离性               枚举型                 可选的隔离级别(默认值:
              Isolation              ISOLATION_DEFAULT)
-------------------------------------------------------------
  只读行               布尔型                 读写型事物 vs 只读性事物
--------------------------------------------------------------
  超时                  int 秒为单位           事物超市设置
---------------------------------------------------------------
回滚异常类(rollbackFor)  一组Class类的        一组异常类,遇到时必须进行回滚。
            实例,必须是Throwable  默认情况下checked exceptions不进行
                        回滚,仅unchecked exceptions即(RuntimeException的子类)
                        才进行事务回滚。
-----------------------------------------------------------------
回归异常类名           一组Class类的名字,      一组异常类名,遇到时 必须 进行回滚
rollbackForClassname  必须是Throwable的子类
            的子类
------------------------------------------------------------------
不回滚异常类     一组Class类的名字,
noRollbackFor     必须是Throwable的子类     一组异常类名,遇到时 必须不 回滚。
           
------------------------------------------------------------------
不回滚异常类名         一组Class类的名字,
noRollbackForClassname   必须是Throwable的子类   一组异常类,遇到时,必须不回滚
------------------------------------------------------------------
事物
http://blog.csdn.net/zhaofsh/article/details/6285869

事物注解方式: @Transactional

当标于类前时, 标示类中所有方法都进行事物处理

例子:

@Transactional
public class TestServiceBean implements TestService {}

当类中某些方法不需要事物时:

@Transactional
public class TestServiceBean implements TestService {
   
    private TestDao dao;
   
    public void setDao(TestDao dao) {
        this.dao = dao;
    }
   
    @Transactional(propagation = Propagation.NOT_SUPPORTED)
    public List<Object> getAll() {
        return null;
    }
   
}


事物传播行为介绍:
@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数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值