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数据

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-07 10:29:02

spring 注解用法搜集的相关文章

3、Spring注解用法的一般步骤

使用注解步骤: 1)先引入context名称空间 xmlns:context="http://www.springframework.org/schema/context" 2)开启注解扫描 <context:component-scan base-package="cn.itcast.e_anno2"></context:component-scan> 3)使用注解 通过注解的方式,把对象加入ioc容器. 创建对象以及处理对象依赖关系,相关

spring注解详解

1. 使用Spring注解来注入属性 1.1. 使用注解以前我们是怎样注入属性的 类的实现: Java代码 public class UserManagerImpl implements UserManager { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } ... } public class UserManagerImpl implements Use

Struts2+Spring3+MyBatis3整合以及Spring注解开发

 分类: Web(2)  版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在做一个SpringMVC+spring+MyBatis的项目,突然想起以前自己要搭建一个Struts2+Spring+IBatis的框架,但是没成功,正好看见培训时候老师给的千里之行的开源项目.于是将这个项目提供的SQL加入到了自己的数据库中(所以数据和项目名用的是qlzx),打算以后做练习的时候用这个数据库.那么接下来问题来了(不要说某翔或者不约,不是那个问题):我有了数据库和数据,想要搭建一个网站,该怎么做

Spring注解总结

一 注解优点?注解解决了什么问题,为什么要使用注解? 二 注解的来龙去脉(历史) Spring 3.1 Reference 对注解与XML对比的一段叙述: 1 没有注解之前 public class UserManagerImpl implements UserManager { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } ... } 配置文件 <bean

[转]Spring 注解总结

声明:这是转载的.内容根据网上资料整理.相关链接:http://www.360doc.com/content/10/1118/16/2371584_70449913.shtmlhttp://www.iteye.com/topic/1121784 http://www.iteye.com/topic/295348 [正文] 一 注解优点?注解解决了什么问题,为什么要使用注解? 二 注解的来龙去脉(历史) Spring 3.1 Reference 对注解与XML对比的一段叙述: 1 没有注解之前 [

Spring注解的整理

注解是基于Spring的. 所谓的是基于Spring而言的,所以对注解的配置是在spring的配置文件中的,一般放在主配置文件中. Spring配置中常用的命名空间,一般的Spring配置都能满足需求: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context=&qu

Java Spring AOP用法

Spring AOP Java web 环境搭建 Java web 项目搭建 Java Spring IOC用法 spring提供了两个核心功能,一个是IoC(控制反转),另外一个便是Aop(面向切面编程),IoC有助于应用对象之间的解耦,AOP则可以实现横切关注点(如日志.安全.缓存和事务管理)与他们所影响的对象之间的解耦. 1.简介 AOP主要包含了通知.切点和连接点等术语,介绍如下 通知(Advice) 通知定义了切面是什么以及何时调用,何时调用包含以下几种 Before 在方法被调用之前

Spring AOP用法详解

什么是AOP AOP:Aspect Oriented Programming,中文翻译为"面向切面编程".面向切面编程是一种编程范式,它作为OOP面向对象编程的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理.权限控制.缓存控制.日志打印等等.AOP采取横向抽取机制,取代了传统纵向继承体系的重复性代码 AOP把软件的功能模块分为两个部分:核心关注点和横切关注点.业务处理的主要功能为核心关注点,而非核心.需要拓展的功能为横切关注点.AOP的作用在于分离系统中的各种关注点,

Spring 注解方式引入配置文件

配置文件,我以两种为例,一种是引入Spring的XML文件,另外一种是.properties的键值对文件: 一.引入Spring XML的注解是@ImportResource @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Documented public @interface ImportResource @ImportResource有三个属性,value.locations.reader,准确来说是两个,loc