Springboot源码分析之注解解析原理

一、Springboot解析类注解原理图在这里插入图片描述二、先说明一个重要问题在Springboot中注解重复是怎么解决,如果在启动类加了@SpringBootApplication和@ComponentScan,那么是使用@SpringBootApplication里面的@ComponentScan,还是启动类上的@ComponentScan,还是合并两个注解的属性后再使用呢?答案是,启动类上的@ComponentScan。SpringBoot在解析注解时,会形成一个层级关系,越在外层的优先级越高。

三、@ComponentScan的作用及使用
1.作用主要是用来扫描包。通过这个注解来搜索需要加载到容器中的Bean。
2.使用
(1)配置包路径,如是没有显示配置,那默认是启动类所在的包包路径。
(2)配置过滤器,主要是配置exclude过滤器(哪些类不要加载)和include类型过滤器(包括声明是否使用默认 的)。
(3)@ComponentScan上默认配置的exclude过滤器主要是过滤掉被当前@ComponentScan注解的类,因为已经被解析了;其次是过滤自动配置的类即在spring.factories中配置了EnableAutoConfiguration的类,且该类被@Configuration注解。
(4)include类型过滤器,主要是扫描被@Component注解的类。
在这里插入图片描述默认添加的include类型过滤器

(5)递归处理(非常重要)
扫描到的类如果被@Configuration注解了,那么这个类会被递归处理,如果其被@ComponentScan注解,那么又会在该类所在的包进行扫描。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个基于Spring框架的快速开发的框架,它的注解非常丰富,可以用来配置和控制Spring Boot应用程序的各种方面。下面是一些常用的Spring Boot注解及其解析。 1. @SpringBootApplication 这是Spring Boot应用程序的主要注解,它包含了@Configuration、@EnableAutoConfiguration和@ComponentScan三个注解。其中@Configuration用于定义配置类,@EnableAutoConfiguration用于自动配置Spring Boot应用程序,@ComponentScan用于扫描组件。 2. @RestController @RestController用于定义RESTful Web服务,它是@Controller和@ResponseBody的组合注解。@Controller用于定义控制器,@ResponseBody用于返回数据。 3. @RequestMapping @RequestMapping用于定义Web请求的映射关系,它可以用于类或方法级别。在类级别上,它定义了一组请求映射,而在方法级别上,它定义了一个具体的请求映射。 4. @PathVariable @PathVariable用于从URI中提取变量值,它可以用于方法参数上。 5. @RequestParam @RequestParam用于从请求参数中提取变量值,它也可以用于方法参数上。 6. @RequestBody @RequestBody用于将请求体中的JSON或XML数据转换为Java对象,它也可以用于方法参数上。 7. @ResponseStatus @ResponseStatus用于定义响应状态码,它可以用于控制器方法上。 8. @ExceptionHandler @ExceptionHandler用于定义异常处理程序,它可以用于控制器类或方法上。 9. @Autowired @Autowired用于自动装配依赖,它可以用于属性、构造方法或方法参数上。 10. @Value @Value用于注入配置属性值,它可以用于属性或方法参数上。 以上是一些常用的Spring Boot注解及其解析,当然还有很多其他的注解,可以根据具体情况选择使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值