注解是什么呢?

其实就像商场的商品上都贴有自己的标签一样,它提供了关于这个商品的许多额外信息。你可以根据这些信息对其进行附加的处理。

(Java的语法糖果然比较差劲), 这个name()方法太累赘了,就像臭名昭著的 setters/getters一样。

其实核心的信息就几个词就够了:    MyAction ,  String name;   METHOD, RUNTIME

“打上标签” 以后,框架就可以利用Java的反射能力,扫描、获取各Class/Method/Field上的注解,对据此对其进行额外的处理。

我目前还没有在其他语言上见到过类似的东西: Annotation这个东西依赖的还是Java语言本身提供的反射支持,能够在运行时操作Class/Method/Field。 像C++这样弱的RTTI能力是不够的,Ruby应该可以。Ruby的元编程能力远强于Java. C#不知道。

有一个简单的判断: 能做出 IoC 框架的语言应该都能做出这个。

包括 IoC 的核心思路也是这个。(我工作第一年时自己实现了一个简易版的IoC组件,只有几百行代码)

Spring 2.x就是响应Java 5引入的Annotation支持,新增了大量的注解以代替xml配置

包括:

@Conditional

@Component, @Controller, @Service, @Repository

Java的Annnotation (注解)的更多相关文章

  1. java中的注解(Annotation)

    转载:https://segmentfault.com/a/1190000007623013 简介 注解,java中提供了一种原程序中的元素关联任何信息.任何元素的途径的途径和方法. 注解是那些插入到 ...

  2. java @param参数注解

    注解,@param是参数的解释.如/***@param s 这里表示对s的文字说明,描述 */ public void aa(String s){}一般java中@表示注解,解释一个方法,类,属性的作 ...

  3. JAVA高级特性 - 注解

    注解是插入到代码中用于某种工具处理的标签.这些标签可以在源码层次上进行操作,或者可以处理编译器将其纳入到注解类文件中. 注解不会改变对程序的编译方式.Java编译器会对包含注解和不包含注解的代码生成相 ...

  4. java中的注解总结

    1. 什么是注解 注解是java5引入的特性,在代码中插入一种注释化的信息,用于对代码进行说明,可以对包.类.接口.字段.方法参数.局部变量等进行注解.注解也叫元数据(meta data).这些注解信 ...

  5. Java基于自定义注解的面向切面的实现

    目的:实现在任何想要切的地方添加一个注解就能实现面向切面编程 自定义注解类 @Target({ElementType.PARAMETER, ElementType.METHOD}) @Retentio ...

  6. Java反射,注解,以及动态代理

    Java反射,注解,以及动态代理 基础  最近在准备实习面试,被学长问到了Java反射,注解和动态代理的内容,发现有点自己有点懵,这几天查了很多资料,就来说下自己的理解吧[如有错误,望指正] Java ...

  7. Java复习总结——注解

    注解 概念及作用 概念 注解即元数据,就是源代码的元数据 注解在代码中添加信息提供了一种形式化的方法,可以在后续中更方便的 使用这些数据 Annotation是一种应用于类.方法.参数.变量.构造器及 ...

  8. 细说java系列之注解

    写在前面 Java从1.5版本之后开始支持注解,通过注解可以很方便地实现某些功能,使用得最普遍的就是Spring框架的注解,大大简化了Bean的配置. 注解仅仅是一种Java提供的工具,并不是一种编程 ...

  9. Spring @Bean注解 (基于java的容器注解)

    基于java的容器注解,意思就是使用Java代码以及一些注解,就可以取代spring 的 xml配置文件. 1-@Configuration & @Bean的配合 @Configuration ...

随机推荐

  1. sftp常用命令

    help 查看sftp支持哪些命令 ls  查看当前目录下文件 cd 指定目录 lcd 更改和/或打印本地工作目录 pwd 查看当前目录 lpwd 打印本地工作目录 get xxx.txt 下载xxx ...

  2. org.apache.subversion.javahl.ClientException: svn: E155004: "" run 'svn cleanup' first.

    原文:https://blog.csdn.net/Duqian94/article/details/53791250 解决方法:1.在eclipse中右键项目“team-->refresh/cl ...

  3. <人人都懂设计模式>-状态模式

    同样是水,固态,气态,液态的变化,是由温度引起. 引此为思考状态模式. from abc import ABCMeta, abstractmethod # 引入ABCMeta和abstractmeth ...

  4. CodeForces 407E: k-d-sequence

    题目传送门:CF407E. 题意简述: 给定非负整数 \(k,d\) 和一个长度为 \(n\)(\(1\le n\le 2\times 10^5\))的整数序列 \(a\). 求这个序列中最长的一个连 ...

  5. vs2017无法查看类图

    问题描述: 在解决方案右键项目,没有查看->查看类图选项 问题根据: VS安装时没有安装VS扩展中的类设计器 解决方案: 运行安装包,找到Other Tols勾选Visual Studio ex ...

  6. Mac 键盘符号说明

    Mac 键盘符号说明 ⌘ == Command ⇧ == Shift ⇪ == Caps Lock ⌥ == Option ⌃ == Control ↩ == Return/Enter ⌫ == De ...

  7. Install PDFtk on Ubuntu

    https://linuxhint.com/install_pdftk_ubuntu/ PDF is an integral part of our everyday life. It’s a doc ...

  8. 微信小程序 vscode 自动保存 保存自动编译 微信开发者工具崩溃

    修改vscode的自动保存延迟时间,将 auto save delay 选项 修改的长一点.

  9. three.js 基础使用1

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  10. 写一个function,清除字符串前后的空格(兼容所有的浏览器)

    function trim1(str){ return str.replace(/(^\s*)|(\s*$)/g,""); }