文档章节

spring application 之 AnnotationConfigApplicationContext

my_juke
 my_juke
发布于 06/09 18:13
字数 235
阅读 43
收藏 0

创建

ApplicationContext applicationContext = new AnnotationConfigApplicationContext(NacosConfiguration.class);

AnnotationConfigApplicationContext 构造方法

public AnnotationConfigApplicationContext() {
		this.reader = new AnnotatedBeanDefinitionReader(this);
		this.scanner = new ClassPathBeanDefinitionScanner(this);
	}

AnnotatedBean读取

Contional 条件注解解析类,是否需要忽略当前类

this.conditionEvaluator = new ConditionEvaluator(registry, environment, null);

默认注解配置处理器

AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry);

排序注解器

beanFactory.setDependencyComparator(AnnotationAwareOrderComparator.INSTANCE);

依赖解决处理器

处理@Lazy @Value @Qualifier @Required @Autowired

beanFactory.setAutowireCandidateResolver(new ContextAnnotationAutowireCandidateResolver());

BeanDefinitionRegistryPostProcessor

处理CompoentScan等,

if (!registry.containsBeanDefinition(CONFIGURATION_ANNOTATION_PROCESSOR_BEAN_NAME)) {
			RootBeanDefinition def = new RootBeanDefinition(ConfigurationClassPostProcessor.class);
			def.setSource(source);
			beanDefs.add(registerPostProcessor(registry, def, CONFIGURATION_ANNOTATION_PROCESSOR_BEAN_NAME));
		}

AutowiredAnnotationBeanPostProcessor

解决@Autowired,@Value,对于注解类,需要一个后置处理器获取所有含有@Autowired,@Value的属性。对于XML不需要。

RequiredAnnotationBeanPostProcessor

校验@Required修改的属性有值没有

CommonAnnotationBeanPostProcessor

解决@Resource 注解,类似于@Autowired,@PreDestroy @PostConstruct

EventListenerMethodProcessor

单例Bean初始完之后执行。解决@EventListener,该注解用于方法之上,会生成一个ApplicationListern注册到ApplicationContext中。

DefaultEventListenerFactory

注入一个EventListenerFactory,与上面的@EventListener配合使用。

ClassPathBeanDefinitionScanner扫描器

© 著作权归作者所有

my_juke
粉丝 4
博文 34
码字总数 22261
作品 0
深圳
私信 提问
聊聊spring cloud netflix ribbon的eager load

序 本文主要研究一下spring cloud netflix ribbon的eager load RibbonAutoConfiguration spring-cloud-netflix-ribbon-2.1.1.RELEASE-sources.jar!/org/springframework/cloud/netflix/ribbo......

go4it
07/08
38
0
spring4.0之二:@Configuration的使用

从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfi...

文文1
2018/06/01
34
0
Spring核心——纯Java运行与@Bean

3.0新增容器启动方法 在3.0之前的Spring核心框架中,我们启动一个Spring容器必须使用一个XML文件。而到了3.X之后的版本Spring为创建容器新增了一个入口类——AnnotationConfigApplicationCo...

随风溜达的向日葵
2018/07/24
6.2K
5
如何在 Spring 中自定义 scope

大家对于 Spring 的 scope 应该都不会默认。所谓 scope,字面理解就是“作用域”、“范围”,如果一个 bean 的 scope 配置为 singleton,则从容器中获取 bean 返回的对象都是相同的;如果 sc...

waylau
02/14
434
0
Spring中Configuration的理解

从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfi...

吴伟祥
2018/06/28
79
0

没有更多内容

加载失败,请刷新页面

加载更多

SSH安全加强两步走

从 OpenSSH 6.2 开始已经支持 SSH 多因素认证,本文就来讲讲如何在 OpenSSH 下启用该特性。 OpenSSH 6.2 以后的版本多了一个配置项 AuthenticationMethods。该配置项可以让 OpenSSH 同时指定...

xiangyunyan
24分钟前
3
0
C或C++不是C/C++

http://www.voidcn.com/article/p-mucdruqa-ws.html

shzwork
今天
6
0
OSChina 周六乱弹 —— 如何将梳子卖给和尚

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @for_ :划水五分钟,专注两小时。分享Various Artists的单曲《贝多芬第8号钢琴奏鸣曲悲伤的第三乐章》: 《贝多芬第8号钢琴奏鸣曲悲伤的第三乐...

小小编辑
今天
176
8
ES5

什么是ES5:比普通js运行要求更加严格的模式 为什么:js语言本身有很多广受诟病的缺陷 如何:在当前作用域的顶部添加:"use strict" 要求: 1、禁止给未声明的变量赋值 2、静默失败升级为错误...

wytao1995
今天
7
0
c++ 内联函数调用快的原因

见图片分析

天王盖地虎626
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部