`
wiselyman
  • 浏览: 2094341 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
博客专栏
Group-logo
点睛Spring4.1
浏览量:82373
74ae1471-94c5-3ae2-b227-779326b57435
点睛Spring MVC4...
浏览量:130816
社区版块
存档分类
最新评论

Spring4.0系列4-Meta Annotation(元注解)

 
阅读更多

Spring4.0系列1-新特性

Spring4.0系列2-环境搭建

Spring4.0系列3-@RestController

Spring4.0系列4-Meta Annotation(元注解)

Spring4.0系列5-@Conditional 

Spring4.0系列6-Generic Qualifier(泛型限定)

Spring4.0系列7-Ordering Autowired Collections

Spring4.0系列8-Groovy DSL 

Spring4.0系列9-websocket简单应用

更多正在编写中。。。

 

 

Spring框架自2.0开始添加注解的支持,之后的每个版本都增加了更多的注解支持。注解为依赖注入,AOP(如事务)提供了更强大和简便的方式。这也导致你要是用一个相同的注解到许多不同的类中去。这篇文章介绍meta annotation来解决这个问题。

Meta Annotation(元注解)定义

Spring4.0的许多注解都可以用作meta annotation(元注解)。元注解是一种使用在别的注解上的注解。这意味着我们可以使用Spring的注解组合成一个我们自己的注解。

创建组合注解

自定义注解或组合注解是从其他的Spring元注解创建的。这种注解分为两类:

  • 1、只是为了编码简单将多个注解组合成一个注解;
  • 2、可以定义一个可复用的注解,这个注解可以解决问题,但是不用记住所有单独的注解。

如以下的DAO操作:

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
 
@Repository
@Scope("prototype")
@Transactional(propagation = Propagation.REQUIRES_NEW, timeout = 30, isolation=Isolation.SERIALIZABLE)
public class OrderDaoImpl implements OrderDao {
  ...
}

 没有任何的业务代码,但是类上注解的申明就让代码有10几行之多。为了简化DAO,我们提供一个组合DAO注解,使用Spring元注解来自定义一个注解。

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
 
@Repository
@Scope("prototype")
@Transactional(propagation = Propagation.REQUIRES_NEW, timeout = 30, isolation=Isolation.SERIALIZABLE)
public @interface MyDao {
}

 使用这个自定义/组合注解,我们可以移除掉DAO上的许多注解:

@MyDao
public class OrderDaoImpl implements OrderDao {
  ...
}

 

注解的属性

大部分情况下,注解是需要属性的。自定义的注解也可以提供属性。比如:@Repositoy可以提供一个name属性。

@Repository("myOrderDao")

 由于自定义的@MyDao可能被很多DAO使用,所以对@Repository的name硬编码是不行的。所以我们简单的添加一个value属性到@MyDao上(和@Repository中的相同的value属性)。

@Repository
@Scope("prototype")
@Transactional(propagation = Propagation.REQUIRES_NEW, timeout = 30, isolation=Isolation.SERIALIZABLE)
public @interface MyDao {
    String value();
}

 

用新的自定义注解定义bean如下:

@MyDao("myOrderDao")
public class OrderDaoImpl implements OrderDao {
  ...
}

 

 更多关于元数据注解的问题访问这里:Srping Framework Reference Documentation

 

新书推荐《JavaEE开发的颠覆者: Spring Boot实战》,涵盖Spring 4.x、Spring MVC 4.x、Spring Boot企业开发实战。

 

京东地址:http://item.jd.com/11894632.html

当当地址:http://product.dangdang.com/23926195.html

亚马逊地址:http://www.amazon.cn/图书/dp/B01D5ZBFUK/ref=zg_bsnr_663834051_6 

淘宝地址:https://item.taobao.com/item.htm?id=528426235744&ns=1&abbucket=8#detail

 

或自己在京东、淘宝、亚马逊、当当、互动出版社搜索自选。

 


分享到:
评论

相关推荐

    spring4.0 Configuration的使用.docx

    ### Spring 4.0 中 @Configuration 的使用详解 #### 一、@Configuration ...通过以上介绍可以看出,在 Spring 4.0 中使用 **@Configuration** 注解提供了极其灵活且强大的配置方式,极大地提高了开发效率和可维护性。

    JAVA注解(Annotation).doc

    2. **元注解(Meta-Annotation)** - 元注解是用于定义注解的注解,Java提供了四个标准元注解: - `@Target`:定义注解能被应用到哪些程序元素,如类、方法、变量等。 - `@Retention`:决定注解的生命周期,何时...

    spring-扩展点-namespacehandler(Spring自定义标签)

    例如,`org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration`类是一个典型的使用了`<mvc:annotation-driven>`标签的例子,它会根据标签的配置自动配置一系列的Spring MVC组件。...

    黑马程序员---注解归纳

    2. **元注解(Meta-Annotation)**:元注解是用于定义其他注解的注解。例如,`@Target`定义了注解可以应用在哪些程序元素上,`@Retention`定义注解的保留策略,`@Documented`指示是否将注解包含在Javadoc中,`@...

    spring源码解析:元注解功能的实现.doc

    在Spring框架中,元注解(Meta-Annotation)是一种用于注解其他注解的特殊注解,它使得Spring能够提供更灵活的注解功能。元注解的使用始于Spring 2.5版本,目的是减少XML配置,提升开发效率。Spring Boot进一步推广...

    Annotation等

    在Java编程语言中,Annotation(注解)是一个重要的特性,它为代码提供了元数据,即关于代码自身的信息,但不直接影响代码的运行。这些信息可以被编译器、JVM或者其他的工具用来验证代码、生成代码、配置应用程序,...

    java 注解annotation的使用以及反射如何获取注解

    1. 元注解(Meta-Annotations):元注解是用于注解其他注解的注解。Java预定义了四个元注解:@Retention、@Target、@Documented和@Inherited。 - @Retention:定义注解的生命周期,有SOURCE、CLASS和RUNTIME三个...

    spring源代码分析:annotation支持的实现

    在Spring框架中,注解(Annotation)支持是其核心特性之一,它极大地简化了配置,提高了代码的可读性和可维护性。这篇博客"spring源代码分析:annotation支持的实现"探讨了Spring如何通过注解处理来实现组件扫描和...

    spring-batch-reference.pdf

    - Meta-Data(元数据):用于存储批处理作业执行过程中的信息,如作业实例、执行状态等,便于查询和管理。 此外,SpringBatch还支持对批处理作业的元数据进行高级操作,例如查询Repository、注册Job和Step、管理...

    Java-Annotation使用大全.doc

    四、元注解(Meta-Annotations) 元注解是用于注解其他注解的注解,如`@Retention`、`@Target`、`@Documented`和`@Inherited`。这些元注解控制了注解的行为,如保留策略、应用范围等。 - `@Retention`:定义注解的...

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...

    jar包_javax.annotation.zip

    在描述中提到的`@Resource`注解是`javax.annotation`包中的一个重要成员,用于标记字段、方法或方法参数,以便容器(如Spring或Java EE应用服务器)能够自动注入相应的依赖。`@Resource`注解的主要用途是在IoC...

    (转)Java中的注解是如何工作的?

    Java中的注解(Annotation)是元数据的一种形式,它提供了在代码中嵌入信息的方式,这些信息可以被编译器、构建工具或者运行时环境读取和处理。注解不仅有助于提升代码的可读性和可维护性,还能帮助开发者实现自动化...

    JSP 中Spring组合注解与元注解实例详解

    本文将深入讲解在JSP环境中Spring框架中的组合注解(Composite Annotation)与元注解(Meta-Annotation)的使用及其实例。 元注解是那些可以直接应用到其他注解上的注解,它们定义了注解的行为和用途。Spring框架内...

    javax.annotation.jar文件

    spring 注解初始化,初始化开始@postconstruct 对象销毁@predestroy javax.annotation.jar文件

    关于java注解比较详细的例子

    4. **元注解**(Meta-Annotations) 元注解是指用于定义其他注解的注解,比如`@Retention`和`@Target`就是元注解。常见的元注解还包括`@Documented`(将注解包含在Javadoc中)、`@Inherited`(子类继承父类的注解)...

    Spring + CXF + 注解方式(webService)

    最后,压缩包文件名称“Demo_Spring_CXF_Annotation”可能包含了示例代码,用于演示如何结合Spring、CXF和注解来创建Web服务。分析这些示例代码将有助于加深对上述概念的理解。 总结起来,Spring与CXF的结合使用...

    简单注解功能

    Java注解(Annotation)是Java语言提供的一种元数据机制,它允许程序员在源代码的各个层次(类、方法、变量等)嵌入信息,这些信息可以被编译器或者运行时环境读取并处理。注解并非代码的一部分,它们不直接影响程序...

    自定义注解:springboot+vue-限制接口调用

    前言 公司前端项目用的是vue,后端用的是Springboot。因为最近公司业务的原因,需要根据条件限制接口的调用。限制的条件是根据指定的key获取...1.元注解(meta-annotation) 元注解的作用就是负责注解其他注解,在java.

    使用java注解.doc

    注解由三个主要部分组成:元注解(Meta-Annotations)、注解类型(Annotation Type)和注解实例(Annotation Instance)。元注解是用来注解其他注解的注解,比如`@Target`和`@Retention`。`@Target`指定了注解可以...

Global site tag (gtag.js) - Google Analytics