详解Spring中使用@within与@target的区别

当我们在使用 Spring 框架的注解时,会有两个注解@within@target经常被使用到。这两个注解的作用都是用于匹配目标类上的注解,但它们的匹配方式略有差别。下面我将详细介绍它们的用法及区别。

@within

@within注解用于匹配标注在目标类的注解,该注解的用法如下:

@within(com.example.MyAnnotation)

上述代码中,@within注解用于匹配标记在类级别的MyAnnotation注解。

例如,需要匹配@MyAnnotation注解标记的所有类和接口,可以使用以下代码:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
}
@within(com.example.MyAnnotation)
public void myAdvice() {
    // ...
}

使用@within注解可以匹配如下类:

@MyAnnotation
public class MyClass {

}

@target

@target注解也用于匹配标注在目标类的注解,用法和@within略有不同:

@target(com.example.MyAnnotation)

上述代码中,@target注解用于匹配标注在目标方法或目标类的注解。

例如,需要匹配@MyAnnotation注解标记的所有类和接口中的所有方法,可以使用以下代码:

@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
}
@target(com.example.MyAnnotation)
public void myAdvice() {
    // ...
}

使用@target注解可以匹配如下代码:

@MyAnnotation
public class MyClass {
    @MyAnnotation
    public void myMethod() {
        // ...
    }
}

区别

@within@target都可以匹配标注在目标类的注解。两者的区别在于匹配的层级不同:

  • @within注解只会匹配注解作用于类上的情况,不会匹配方法或属性上的。

  • @target注解会匹配注解作用于方法或属性上,也会匹配作用于类上的情况。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Spring中使用@within与@target的区别 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • 学习笔记之Vuex的用法总结(Vue状态管理)

    学习笔记之Vuex的用法总结(Vue状态管理) 什么是Vuex? Vuex是一个专为Vue.js开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex让我们的状态管理更简单清晰。 Vuex的基本概念 在使用Vuex之前,需要了解一些基本概念。 State(状态) Vuex使用单一状态树,也就是…

    other 2023年6月27日
    00
  • 如何将Linux命令设置成键盘快捷键?

    如何将Linux命令设置成键盘快捷键 在Linux系统中,你可以通过设置键盘快捷键来执行常用的命令,提高工作效率。下面是设置Linux命令为键盘快捷键的完整攻略。 步骤一:创建自定义脚本 首先,你需要创建一个自定义的脚本文件,用于执行你想要设置为快捷键的Linux命令。你可以使用任何文本编辑器创建一个新的文件,比如custom_script.sh。 示例脚本…

    other 2023年8月18日
    00
  • Vue.js递归组件实现组织架构树和选人功能

    下面是关于 Vue.js 递归组件实现组织架构树和选人功能的完整攻略。 什么是 Vue.js 递归组件 Vue.js 的递归组件是指在组件的模板中可以调用组件自身的一种特殊组件。通过使用递归组件,可以在联动结构中轻松地构建无限级别的嵌套组件和树形结构。 实现组织架构树和选人功能的步骤 数据结构的设计 组织架构树通常是按照树形结构设计的,所以在 Vue.js …

    other 2023年6月27日
    00
  • 更新完Win11系统后C盘变小了怎么办? win11一更新c盘就变小解决办法

    更新完Win11系统后C盘变小了怎么办? 当你更新完Win11系统后,发现C盘的可用空间变小了,可能是由于系统更新过程中产生了一些临时文件或者备份文件,导致C盘空间被占用。下面是解决这个问题的一些方法: 方法一:清理临时文件和备份文件 打开“设置”菜单,点击“系统”选项。 在左侧导航栏中选择“存储”。 在“存储”页面中,点击“临时文件”。 在“临时文件”页面…

    other 2023年8月2日
    00
  • SpringBoot Admin健康检查功能的实现

    针对“SpringBoot Admin健康检查功能的实现”的完整攻略,我来详细讲解下。 1. SpringBoot Admin SpringBoot Admin是一个管理和监控SpringBoot应用的开源框架,它提供了用户友好的Web UI界面来查看和管理SpringBoot应用程序。它还提供了实时监视和通知等功能,并支持JMX-over-WebSocke…

    other 2023年6月27日
    00
  • webservice初识

    以下是关于“webservice初识”的完整攻略,包括webservice的定义、webservice的优点、webservice的实现方式、webservice的示例说明和注意事项。 webservice的定义 Web服务(Web Service)是一种基于Web的应用程序接口(API),它可以通过网络进行访问。Web服务使用标准的Web协议(如HTTP、…

    other 2023年5月8日
    00
  • 怎样清除显卡右键菜单

    清除显卡右键菜单的过程可以分两步完成:首先是通过修改注册表来移除菜单项,然后是重启资源管理器。 第一步:移除菜单项 在 Windows 中,显卡驱动安装后,会在右键菜单中添加一些功能项,例如 NVIDIA 控制面板、AMD Radeon Setting 等。如果你不需要这些功能,可以通过修改注册表来移除对应的菜单项。 打开注册表编辑器:在 Windows 搜…

    other 2023年6月27日
    00
  • 支持向量机多分类matlab

    支持向量机多分类matlab 简介 支持向量机(Support Vector Machine, SVM)是一种广泛应用于分类、回归和离群点检测的机器学习算法。其优点在于可以有效地处理高维空间中的复杂数据,具有较高的分类准确度和泛化能力。本文将介绍如何在MATLAB中使用SVM进行多分类问题的建模和训练。 数据准备 在进行SVM多分类的建模和训练前,我们需要准…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部