spring源码解析——@Component注解原理
文章目录
- 一、@Component作用
- 二、@Component注解实现的原理
一、@Component作用
@Component是用在类上面的注解,它的功能是用来告诉spring当前类是一个Bean对象,然后让spring对该类进行自动创建并管理。
二、@Component注解实现的原理
@Component注解底层主要依赖于一个叫做includeFilters的对象来实现的。该对象其实是spring扫描器中的一个属性,它规定了哪些对象会被spring容器识别。所以如果一个对象如果不加上@Component注解,但是在扫描注解上加上该类的名称,那么这个类也会呗spring容器识别成一个对象纳入自身的管理范围,注解代码如下:
@ComponentScan(value = "com.muyichen",includeFilters = {@ComponentScanFilter(type = FilterType.ASSIGNABLE_TYPE,classes = ProductService.class)}
)
public class AppConfig {}
如上方的代码,如果在spring容器加载的属性配置类上方,添加上这个注解,那么就可以把没有@Component注解的ProductService.class类加入到spring容器中了。
总结一下:
当spring启动的时候,扫描器会通过ASM将target目录下所有的class文件的元数据读取出来,然后在扫描的过程中会给自身的includeFilters属性添加上一个默认的类,这个类就是@Component注解类。之后的扫描过程就是将对应拥有@Component注解的class文件加载成一个个的Bean对象放入到spring容器中进行管理。
spring源码解析——@Component注解原理相关推荐
- Spring源码解析之@Component注解的扫描
阅读须知 Spring源码版本:4.3.8 文章中使用/* */注释的方法会做深入分析 正文 承接Spring源码解析之context:component-scan标签解析,下面就是扫描的流程: Cl ...
- Spring源码深度解析(郝佳)-学习-源码解析-基于注解切面解析(一)
我们知道,使用面积对象编程(OOP) 有一些弊端,当需要为多个不具有继承关系的对象引入同一个公共的行为时,例如日志,安全检测等,我们只有在每个对象引用公共的行为,这样程序中能产生大量的重复代码,程序就 ...
- Spring源码深度解析(郝佳)-学习-源码解析-基于注解注入(二)
在Spring源码深度解析(郝佳)-学习-源码解析-基于注解bean解析(一)博客中,己经对有注解的类进行了解析,得到了BeanDefinition,但是我们看到属性并没有封装到BeanDefinit ...
- Spring源码解析【完整版】--【bilibili地址:https://www.bilibili.com/video/BV1oW41167AV】
[本文为bilibili视频雷丰阳的Spring源码解析的完整版总结文章,其中文章前面大部分为他人博文的搬运,后面补充了其未总结的部分] 一.Java的注解 1. 注解的概念 注释:用文字描述程序,给 ...
- Spring 源码解析 -- SpringWeb过滤器Filter解析
简介 在上几篇文章中探索了请求处理相关的代码,本篇开始探索请求处理前的一些操作代码,如Filter.本篇探索Filter初始化.请求处理等相关代码. 前言 说先简单的定义相关的测试代码: 启动类: i ...
- Spring源码解析 -- SpringWeb请求参数获取解析
Spring源码解析 – SpringWeb请求参数获取解析 简介 在文章:Spring Web 请求初探中,我们看到最后方法反射调用的相关代码,本篇文章就探索其中的参数是如何从请求中获取的 概览 方 ...
- 手撸spring源码分析IOC实现原理
手撸spring源码分析IOC实现原理 文章出处:https://github.com/fuzhengwei/small-spring 根据小付哥的手撸spring核心源码一步步学习出来的结果收货总结 ...
- 人人都能看懂的Spring源码解析,Spring如何解决循环依赖
人人都能看懂的Spring源码解析,Spring如何解决循环依赖 原理解析 什么是循环依赖 循环依赖会有什么问题? 如何解决循环依赖 问题的根本原因 如何解决 为什么需要三级缓存? Spring的三级 ...
- Spring源码解析之-- 事务TransactionInterceptor 分析(开启事务)
目录 一.介绍 二.TransactionInterceptor 分析 2. 流程 2.1 invoke 2.1.1 TransactionAspectSupport#invokeWithinTran ...
- Spring源码解析 - AbstractBeanFactory 实现接口与父类分析
2019独角兽企业重金招聘Python工程师标准>>> 我们先来看类图吧: 除了BeanFactory这一支的接口,AbstractBeanFactory主要实现了AliasRegi ...
最新文章
- python服务器消息分发_Python实现分发数据块到多台服务器上
- 获取pheatmap聚类后和标准化后的结果
- SAP S/4 HANA中的供应链计划提升
- JavaScript创建对象的6种方式
- 机器“血液”登上Nature:一条假鱼靠它续航36小时,无需固态电池
- iOS 如何让IOS应用从容地崩溃
- 我如何调优SQL Server查询
- python工作方法_用python开始一天工作
- selenium和PhantomJS的使用
- C++简单的写文本文件代码
- CryptoJS加密使用
- 深入理解FIFO(包含有FIFO深度的解释)
- 电源保护——TVS管
- 计算机网络技能大赛感受,技能大赛心得体会
- java isnull方法_isnull函数详解
- Spring Data MongoDB简单的增删改查
- 用c#二次开发的焊锡检测视觉系统
- Mac电脑快速切换输入法!自动切换输入法!
- DirectX End-User Runtimes2010 dl
- 恒温烙铁使用注意事项