从@SpringBootApplication 中认识下注解
  4Z2XPuszm5rs 2023年11月02日 42 0

   在SringBoot 启动项中,我们添加注解,可以直接启动项目:

从@SpringBootApplication 中认识下注解_spring

今天就从这个@SpringBootApplication 认识下Java 注解:

从@SpringBootApplication 中认识下注解_spring_02

1、首先我们先了解下Java 中元注解:一种应用于其他注解的注解

    比如:在java.lang.annotation包下面定义了以下几种元注解类型

    @Target注解标记了另一个注解,以限制该注解可以应用于哪种Java元素。@Target注解指定以下元素类型之一作为其值:

ElementType.ANNOTATION_TYPE,可以应用于注解类型。

ElementType.CONSTRUCTOR,可以应用于构造函数。

ElementType.FIELD,可以应用于字段或属性。

ElementType.LOCAL_VARIABLE,可以应用于局部变量。

ElementType.METHOD,可以应用于方法级注解。

ElementType.PACKAGE,可以应用于包声明。

ElementType.PARAMETER,可以应用于方法的参数。

ElementType.TYPE,可以应用于类的任何元素。

   @Retention注解指定了标记的注解如何存储:

RetentionPolicy.SOURCE,标记的注解仅保留在源代码级别,并被编译器忽略。

RetentionPolicy.CLASS,标记的注解在编译时由编译器保留,但被Java虚拟机(JVM)忽略。

RetentionPolicy.RUNTIME,标记的注解由JVM保留,以便运行时环境可以使用。

   @Documented注解指示每当使用指定的注解时,应使用Javadoc工具记录这些元素。

  @Repeatable注解是JavaSE8中引入的,表示标记的注解可以多次应用于同一声明或类型使用。

2、其次我们在了解下Spring框架中注解:

@ComponentScan注解

@ComponentScan注解一般和@Configuration注解一起使用,主要的作用就是定义包扫描的规则,然后根据定义的规则找出哪些需类需要自动装配到spring的bean容器中,然后交由spring进行统一管理。

说明:针对标注了@Controller、@Service、@Repository、@Component 的类都可以别spring扫描到。

@Filter注解作用

@Filter 注解主要用于在 Spring 容器中自动注册 Bean 时,

可以通过它对注册 Bean 进行过滤、排除或者只包含某些 Bean。

@SpringBootApplication 注解包含了 @ComponentScan 注解,

它默认会扫描启动类所在包及其子包中的所有 Bean,并将它们注册到 Spring 容器中。

但是,有些情况下我们不希望某些特定的 Bean 被扫描并注册到 Spring 容器中,

比如 SpringBoot 的自动配置类。

@Filter 注解的作用就是过滤掉指定的 Bean,不让它们被注册到 Spring 容器中。

具体用法如下所示:

@SpringBootApplication(excludeFilters = {    @Filter(type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class})})

excludeFilters 属性用于指定需要排除的 Bean,通过 @Filter 注解的 type 属性设置过滤器类型,

包含 ANNOTATION、ASSIGNABLE_TYPE、CUSTOM、REGEX 和 ASPECTJ等多种类型

@AliasFor注解

   @AliasFor是Spring Framework中的一个注解,从4.2版本开始出现,源码位于spring-core中,用于注解的属性之上,为该属性声明一个别名。

顾名思义,@AliasFor表示别名,它可以添加到自定义注解的两个属性上,表示这两个属性互为别名。也就是说,这两个属性其实是同一个含义。

通常所有注解都会有一个属性value,在使用注解时,如果给value进行赋值,默认可以将value省略,如:@RequestMapping(value="name") 就可以写成

从@SpringBootApplication 中认识下注解_spring_03

若自定义注解继承了另一个注解,要想使用继承过来的属性值,就必须在自定义注解中重新定义一个属性,同时声明该属性是继承过来注解的某个属性的别名。例如:

从@SpringBootApplication 中认识下注解_自定义注解_04

自定义注解@MyComponent继承了注解@Component(继承了哪个注解,就需要在自定义注解上引入该注解),name属性与@Component中的value属性互为别名。

   

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Vtxr3XfwhHq   2024年05月17日   51   0   0 Java
  Tnh5bgG19sRf   2024年05月20日   104   0   0 Java
  8s1LUHPryisj   2024年05月17日   46   0   0 Java
  aRSRdgycpgWt   2024年05月17日   47   0   0 Java
4Z2XPuszm5rs