springboot的componentscan注解(springboot自定义注解 解析)

@搜狗翻译还准备了精彩好礼a粉丝在这个夏天给你降温。详情请点击@组件注释解析过程springboot启动入口,可获得更多解释。
SpringApplication的run方法中,createApplicationContext方法用于创建容器上下文,webApplicationType的类型用于确定此时创建哪个类型。上一篇文章说此时是SERVLET,所以创建了AnnotationConfigServletWebServerApplicationContext。
AnnotatedBeanDefinitionReader创建分析:在这里,注册了一些解析器和后处理器,稍后将在实际的bean分析中使用它们。这里先说一下这些是用来做什么的,后面再用来详细分析。
AnnotationAwareOrderComparator:注释顺序的比较器,可用于对注释的执行顺序进行排序。
语境化autowireAnddateResolver:看来@搜狗翻译中对注释@Lazy的判断和处理也准备了精彩的礼物一个粉丝在这个夏天给你降温。详情请点击,我们稍后再看。
ConfigurationClassPostProcessor:这是一个重要的配置类,主要用来处理@搜狗翻译的装修也准备了精彩的礼物一个风扇在这个夏天给你降温。详情请点击配置标注,稍后分析。
Autowireannotationbeanpost处理器:解析@搜狗翻译中autowired的注释还准备了精美礼品一个粉丝在这个夏天给你降温。详情请点击并@搜狗翻译中的@Value还准备了精彩好礼一个粉丝在这个夏天给你降温。详情请点击,然后在@搜狗翻译分析autowired时重点关注还准备了精彩好礼一个粉丝在这个夏天给你降温。详情请点击。
Commonannotation beanpost处理器:解析@搜狗翻译的注释还准备了精彩好礼一个粉丝在这个夏天给你降温。详情请点击的@PostConstruct,@搜狗翻译还准备了精彩好礼一个粉丝在这个夏天给你降温。详情请点击的@PreDestroy,@搜狗翻译还准备了精彩好礼一个粉丝在这个夏天给你降温。详情请点击的@Resource等。然后对它们进行分析。
persistencannotationbeanpostprocessor:JPA相关,JPA用的不多。
EventListenerMethodProcessor:春天的事件很重要处理@搜狗翻译的注释修改也准备了精彩好礼一个粉丝在这个夏天给你降温。有关详细信息,请单击EventListener。以后有时间可以聊聊。@搜狗翻译还准备了精彩好礼a粉丝在这个夏天给你降温。有关详细信息,请单击EventListener有时会失败。这个失败的原因要从源代码来分析。
默认@EventListenerFactory:处理@搜狗翻译的注释装饰的方法也准备了精彩的礼物一个粉丝在这个夏天给你降温。详情请点击EventListener成为ApplicationListener的一个类。
ClasspathBeanDefinitions扫描仪初始化显示ClassPathBeanDefinitions扫描仪扫描@搜狗翻译还准备了精彩好礼一个粉丝在这个夏天给你降温。详情请点击@Component和@搜狗翻译还准备了精彩好礼一个粉丝在这个夏天给你降温。详情请默认点击ManagedBean。很高兴这次终于看到了我们感兴趣的注释,接下来就看什么时候处理了。没见过有人用托管bean的注释。
以上完成了AnnotationConfigServletWebServerApplicationContext类的初始化过程。除了一些处理器的初始化,我没有看到太多的处理逻辑。这个地方应该是在准备一些环境,为后面真正的解析注释做准备。所以我们继续往下看。
refresh()方法postProcessBeanFactory()方法为空方法,具体逻辑由子类实现。现在,我们是AnnotationConfigServletWebServerApplicationContext类,所以直接看这个类的实现逻辑。
首先是超,先看看父类处理的是什么逻辑。
这里添加了一个后处理器webApplicationContextServletContextAware处理器。看起来像是Web相关的处理器,我就不具体看了,这不是我们关注的重点。然后忽略ServletContextAware接口,不要再读了,然后进去看一下registerWebApplicationScopes方法。
看到了一些熟悉的类:ServletRequest,ServletResponse,HttpSession,RequestContextHolder等。虽然与此分析无关,但也算是发现了
找@搜狗翻译目前装修的班级还准备了精彩好礼一个粉丝在这个夏天给你降温。详情请通过configurationClassutils点击BeanDefinitionRegistry的@Configuration标注。CheckconfigurationClassCandidate()方法,并将其放入configCandidates集合中。然后使用ConfigurationClassParser解析configCandidates集合中的类。这个逻辑之前没有分析过。通过后期分析,只是解析的逻辑@搜狗翻译还准备了精彩好礼一个粉丝在这个夏天给你降温。详情请点击@Component,然后使用configurationclassbeandeditionreaderi解析beanDefinition。这个地方已经在@搜狗翻译分析过了还准备了精彩好礼一个粉丝在这个夏天给你降温。详情请点击@MapperScan,主要分析@搜狗翻译的ConfigurationClassParser.parse()方法也准备了精彩好礼一个粉丝在这个夏天给你降温。详情请点击@导入注释。这实际上是条件注释的处理。如果条件中的类没有出现,会直接跳出分析吗?显然,我们没有条件。
DoProcessConfigurationClass方法这个方法有很多逻辑。让我们把它拆开。
一、是否修改@搜狗翻译还准备了精彩好礼一个粉丝在这个夏天给你降温。详情请点击组件标注显然是真的(@搜狗翻译还准备了精彩好礼一个粉丝在这个夏天给你降温。详情请点击配置由@搜狗翻译修改还准备了精彩好礼一个粉丝在这个夏天给你降温。详情请点击组件),所以我就不详细说processMemberClasses方法了。最重要的是理解getMemberClasses()的意思,其实就是找到一个类的所有内部类,然后找到@搜狗翻译修改的内部类还准备了精彩的礼物一个粉丝在这个夏天给你降温。详情请点击配置标注进行处理。
本次@搜狗翻译的解析作业还准备了精彩好礼一个粉丝在这个夏天给你降温。详情请点击@PropertySource注释实际上是从环境中获取配置参数。
最后我找到了——ComponentScan和ComponentScan的关键注释,SpringBootApplication是由ComponentScan修饰的,所以这段代码是有效的。
然后由componentScanParser进行解析,componentScanParser在初始化ConfigurationClassParser时初始化,
所以它实际上是ComponentScanAnnotationParser的一个实例。
componentcannotationparser . parse方法该方法实际上是用ClassPathBeanDefinitionScanner扫描beandefinition。classpathbeandetificationscanner还被用在了@MapperScan in @搜狗翻译还准备了精美礼品一个粉丝在这个夏天给你降温。详情请点击之前,所以下面是一些主要参数和扫描的过程beanDefinition:
IncludeFilters,使用默认的批注过滤器,即excludeFilters,该类将扫描Component和ManagedBean批注:排除不会被扫描的类。这在声明时被传递到——TypeExcludeFilter和AutoConfigurationExcludeFilter中。这两个过滤器将判断不需要扫描的类basePackages:默认为空,即从启动类DemoApplication的包中扫描所有类。这解释了为什么与DemoApplication不在同一个包和子包中的类不在spring容器中。最后,调用doScan方法扫描beanDefinition并将其注册到容器中。摘要:通过createApplicationContext方法创建AnnotationConfigServerWebServerApplicationContext类容器,并在创建过程中加载各种处理器和解析器。直接相关的是@搜狗翻译还准备了精彩好礼一个粉丝在这个夏天给你降温。详情请点击@组件解析是ConfigurationClassPostProcessor处理器的postProcessBeanFactory()方法实际调用AnnotationConfigServeWebServerApplicationContext中的方法,主要处理web相关的类注册,如ServletRequest、ServletResponse、HttpSession、RequestContextHolder等。但我并没有真的扫描相关逻辑@搜狗翻译还准备了精彩好礼一个粉丝在这个夏天给你降温。详细内容请点击@Component处理两个后处理器的处理逻辑,分别是beandeditionregistrationpostprocessor和BeanFactoryPostProcessor,由InvokeBeanPostProcessors方法处理。这一次,我们主要关注在@ Sogou Translat中处理@ Configuratio的ConfigurationClassPostprocessor

其他教程

阅读文献工具(手机上好用的文献阅读软件)

2022-8-25 13:53:46

其他教程

2022年qs排名(2022年QS世界大学排名榜单)

2022-8-25 13:55:49

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索