从JDK 1.5开始, Java增加了对元数据(MetaData)的支持,提供了4个标准的用来对注解类型进行注解的注解类,我们称之为 meta-annotation(元注解)
描述注解的使用范围(即:被修饰的注解可以用在什么地方)
ElementType 的取值有:
描述注解的生命周期(即:被修饰的注解被保留到何时)
RetentionPolicy 的取值有:
会被 Javadoc 工具动态提取成文档
允许自雷继承父类中的注解
注解 | 描述 | 起始版本 |
---|---|---|
@Component | 通用组件模式注解,是所有组件类型注解的元注解 | Spring 2.5 |
@Repository | 数据仓库模式注解,最初由域驱动设计(Evans,2003)定义为"模拟对象集合的封装存储、检索和搜索行为的机制" | Spring 2.0 |
@Service | 服务类组件模式注解 | Spring 2.5 |
@Controller | Web控制器组件模式注解 | Spring 2.5 |
@Configuration | 配置类模式注解 | Spring 3.0 |
注解 | 描述 | 起始版本 |
---|---|---|
@ImportResource | 导入指定路径的配置文件,与XML元素作用相同 | Spring 2.5 |
@Import | 导入Configuration配置类 | Spring 2.5 |
@ComponentScan | 扫描指定包下标注Spring模式注解的类 | Spring 3.1 |
@Bean | 向容器中注册Bean,与XML元素作用相同 | Spring 3.0 |
注解 | 描述 | 起始版本 |
---|---|---|
@Autowired | Bean依赖注入,支持多种注入方式,例如标注在构造器、普通方法、字段等 | Spring 2.5 |
@Qualifier | 与@Autowired配合使用,支持细粒度的Bean注入 | Spring 2.5 |
@Value | 多用于注入外部化配置,例如xx.properties中的user.name=markus,可以通过@Value((“${user.name}”))注入到指定的字段中 | Spring 3.0 |
注解 | 描述 | 起始版本 |
---|---|---|
@Profile | 基于配置条件的注解,常用与指定环境,在环境符合条件下注册 | Spring 3.1 |
@Conditional | 只有当所有指定条件都匹配时,组件才有资格注册,条件是可以在注册bean定义之前以编程方式确定的任何状态 | Spring 4 |
注解 | 描述 | 起始版本 |
---|---|---|
@Inject | 与@Autowired作用相同用于Bean注入 | Spring 2.5 |
@Resource | 与@Autowired作用相同用于Bean注入 | Spring 2.5 |
@PostConstruct | 标注在自定义方法上,在Bean初始化阶段执行 | Spring 2.5 |
@PreDestroy | 标注在自定义销毁前执行方法上,在Bean销毁前执行 | Spring 2.5 |
参考文章:@TransactionalEventListener的使用和实现原理
Javadoc 是一种文档注释,目前支持三种注释。分别是单行注释、多行注释和文档注释。文档注释以 /** 开头,以 */ 结束,可以通过 Javadoc 生成 API 帮助文档,Java帮助文档主要用来说明类,成员变量和方法的功能。
文档注释只放在类、接口、成员变量、方法之前,因为 Javadoc 只处理这些地方的文档注释,而忽略其他地方的文档注释。
Javadoc 工具可以识别文档注释中的一些特殊标签,这些标签一般以@开头,后跟一个指定的名字,有的也以{@开头,以}结束。Javadoc 可以识别的标签如下表所示:
标签 | 描述 | 示例 |
---|---|---|
@author | 标识一个类的作者,一般用于类注释 | @author description |
@deprecated | 指名一个过期的类或成员,表明该类或方法不建议使用 | @deprecated description |
{@docRoot} | 指明当前文档根目录的路径 | Directory Path |
@exception | 可能抛出异常的说明,一般用于方法注释 | @exception exception-name explanation |
{@inheritDoc} | 从直接父类继承的注释 | Inherits a comment from the immediate surperclass. |
{@link} | 插入一个到另一个主题的链接 | {@link name text} |
{@linkplain} | 插入一个到另一个主题的链接,但是该链接显示纯文本字体 | Inserts an in-line link to another topic. |
@param | 说明一个方法的参数,一般用于方法注释 | @param parameter-name explanation |
@return | 说明返回值类型,一般用于方法注释,不能出现再构造方法中 | @return explanation |
@see | 指定一个到另一个主题的链接 | @see anchor |
@serial | 说明一个序列化属性 | @serial description |
@serialData | 说明通过 writeObject() 和 writeExternal() 方法写的数据 | @serialData description |
@serialField | 说明一个 ObjectStreamField 组件 | @serialField name type description |
@since | 说明从哪个版本起开始有了这个函数 | @since release |
@throws | 和 @exception 标签一样. | The @throws tag has the same meaning as the @exception tag. |
{@value} | 显示常量的值,该常量必须是 static 属性。 | Displays the value of a constant, which must be a static field. |
@version | 指定类的版本,一般用于类注释 | @version info |