`
除了你无可取代
  • 浏览: 148098 次
  • 性别: Icon_minigender_1
  • 来自: 悲鸣洞穴
社区版块
存档分类
最新评论

spring 注解用法搜集

 
阅读更多

==============注册==================http://www.2cto.com/kf/201207/140774.html
标注到类头部,将此类注册到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数据

 

分享到:
评论
1 楼 shishus 2014-11-24  
[flash=200,200][url][img][list]
[*]
引用
[u][i][b][/b][/i][/u]
[/list][/img][/url][/flash]
                     

相关推荐

    Spring in Action(第二版 中文高清版).part2

    5.3.3 使用Spring对JDBC的DAO支持类 5.4 在Spring里集成Hibernate 5.4.1 选择Hibernate的版本 5.4.2 使用Hibernate模板 5.4.3 建立基于Hibernate的DAO 5.4.4 使用Hibernate 3上下文会话 5.5 Spring和Java...

    Spring in Action(第2版)中文版

    5.3.3使用spring对jdbc的dao支持类 5.4在spring里集成hibernate 5.4.1选择hibernate的版本 5.4.2使用hibernate模板 5.4.3建立基于hibernate的dao 5.4.4使用hibernate3上下文会话 5.5spring和java持久api ...

    Spring in Action(第二版 中文高清版).part1

    5.3.3 使用Spring对JDBC的DAO支持类 5.4 在Spring里集成Hibernate 5.4.1 选择Hibernate的版本 5.4.2 使用Hibernate模板 5.4.3 建立基于Hibernate的DAO 5.4.4 使用Hibernate 3上下文会话 5.5 Spring和Java...

    SpringMVC+Spring+hibernate 教程

    这一步是搭建过程的基础,需要搜集Spring、SpringMVC、Hibernate以及它们的依赖库,同时也要准备配置文件,包括web.xml、spring-mvc.xml、spring-context.xml等,这些配置文件中包含了控制反转容器的配置、视图解析...

    spring mvc 框架

    在Spring MVC中,可以通过注解如`@RequestMapping`来轻松实现RESTful风格的服务。 #### 五、总结 本文详细介绍了Spring MVC框架的基本概念以及如何通过示例代码来搭建一个简单的Spring MVC项目。通过配置`web.xml`...

    搜集整理出来的一些小项目

    3. **框架与库**:项目可能使用了各种框架(如Django、React、Vue.js、Spring等)和库(如jQuery、TensorFlow等),这有助于学习如何有效地利用这些工具。 4. **版本控制**:如果项目包含版本历史,可以通过查看Git...

    华为java培训资料搜集

    7. **Spring框架**:作为企业级应用广泛使用的框架,Spring提供了依赖注入、AOP(面向切面编程)、事务管理等功能。掌握Spring Boot和Spring Cloud,可以快速构建分布式系统。 8. **数据库操作**:了解基本的SQL...

    Apache CXF 资料搜集

    在CXF中,通过@WebService注解标记接口,然后提供其实现。通过CXF的wsdl2java工具,可以从接口生成服务器端代码,也可以从WSDL生成Java代码。部署服务时,可以将服务绑定到特定的HTTP端点。 5. **Apache CXF入门...

    搜集的java相关的面试题

    - 注解(Annotation):自定义注解、元注解及其在代码中的应用。 - Lambda表达式:理解函数式编程思想,使用Lambda简化代码。 - Stream API:流式操作数据,理解中间操作和终端操作的区别。 以上知识点是Java...

    java面试题库(面试时网上搜集的资源加亲身经验)

    理解它们的区别和用法至关重要。 - **变量、常量**:了解如何声明、初始化和使用变量,以及常量的定义。 - **运算符**:掌握各种运算符,如算术、比较、逻辑和位运算符。 - **流程控制**:包括if语句、switch语句...

    JSP人事管理系统+JSP学习基础教程+全面搜集+经典

    【JSP培训-李绪成】可能是某位专家或讲师李绪成的培训课程资料,可能涵盖更深入的JSP进阶内容,如MVC设计模式、Spring框架与JSP的集成、AJAX在JSP中的应用,以及最佳实践和优化技巧等。 总之,这个压缩包提供了从...

    xdoclet_appfuse打包

    总的来说,这个压缩包提供了丰富的资料,适合初学者和有经验的开发者去深入理解和使用AppFuse和XDoclet,同时也涵盖了SpringSide、SiteMesh、Acegi Security(Spring Security)和Log4j等其他相关技术,对于构建和...

    FreeMarker中英文帮助文档

    它被广泛应用于Web开发,特别是与Java后端框架如Spring、Struts等结合使用。本资源包含了一份精心搜集的中英文帮助文档,旨在为开发者提供详尽的FreeMarker学习资料。 1. **FreeMarker基础概念** - **模板语言**: ...

    课设毕设基于SSM的课程思政元素收集遴选系统 LW+PPT+源码可运行.zip

    这个系统的目标是为教育工作者提供一个平台,便于他们搜集、整理和筛选课程中的思想政治教育元素,以实现课程思政的教学目标。以下是该项目涉及的主要知识点: 1. **SSM框架集成**: - **Spring框架**:Spring作为...

    freemarker学习资料

    - **注释**:使用`&lt;#comment&gt;`进行模板内的注释。 - **内置函数**:如`?html`(转义HTML特殊字符)和`?length`(获取列表长度)等。 3. **Freemarker与Java集成**: - **`FreeMarkerServlet`**:在Web应用中,...

    java8集合源码分析-javaInterview:java面试

    1.搜集面试题目 2.java资料 3 找工作日期记录,看从准备工作开始,多久可以找到工作(疫情原因,进度放缓不少) :bar_chart: :crossed_swords: :desktop_computer: 面试题 0601 告一段落,很多地方准备的不够充分 0525 店...

    关于计算机专业毕业设计如何开始的问题

    1. **确定主题与搜集资料**:首先,你需要确定一个具有挑战性且与你兴趣相符的主题。这可能是当前的热门技术,如人工智能、大数据、云计算或网络安全。通过图书馆、学术期刊、在线论文库和开源社区(如GitHub)收集...

Global site tag (gtag.js) - Google Analytics