一、容器中注入组件 1,包扫描 + 组件标注注解 源码:Demo01_ComponentScan a)组件标注 @Controller @Service @Repository @Component b)包扫描@ComponentScan @ComponentScan中主要值的解释 value:扫描
FilterType.ANNOTATION:按照注解FilterType.ASSIGNABLE_TYPE:按照给定的类型FilterType.ASPECTJ:使用ASPECTJ表达式FilterType.REGEX:使用正则指定FilterType.CUSTOM:使用自定义规则 useDefaultFilters:是否使用默认的扫描机制。默认按照a)中组件标注扫描 2,使用@Bean导入 a)@Scope作用域 prototype:多实例的:ioc容器启动并不会...
@BeanpublicIOCService iocService(){returnnewIOCServiceImpl(); } } 2.2、新增测试类 publicclassAnnotationIOCTest {publicstaticvoidmain (String args[]){ ApplicationContext context=newAnnotationConfigApplicationContext("com.dw.study"); IOCService iocService=context.getBean(IOCService.class); System.out.p...
FilterType.ANNOTATION:按照注解FilterType.ASSIGNABLE_TYPE:按照给定的类型FilterType.ASPECTJ:使用ASPECTJ表达式FilterType.REGEX:使用正则指定FilterType.CUSTOM:使用自定义规则 useDefaultFilters:是否使用默认的扫描机制。默认按照a)中组件标注扫描 2,使用@bean导入 a)@Scope作用域 prototype:多实例的:ioc容器启动并不会去...
二、SpringIOC源码解析 在开始之前我们先通过一个简单的示意图来了解一下大概的一个流程 从示意图可以看出,当web容器启动的时候,spring的全局bean的管理器会去xml配置文件中扫描的包下面获取到所有的类,并根据你使用的注解,进行对应的封装,封装到全局的bean容器中进行管理,一旦容器初始化完毕,beanID以及bean实例化的...
我们看下源码: public BeanDefinitionHolder parseBeanDefinitionElement(Element ele, @Nullable BeanDefinition containingBean) { // 解析 ID 属性 String id = ele.getAttribute(ID_ATTRIBUTE); // 解析 name 属性 String nameAttr = ele.getAttribute(NAME_ATTRIBUTE); // 分割 name 属性 List<String> ...
上一篇文章Spring IoC源码分析(注解版) -- 上 分析了Spring IoC容器中关于BeanDefinition的registy过程。我们接着来分析剩下的内容。加载BeanDefinition上一篇我们分析完了AnnotationConfigApplicationContext类中的register方法,现在来分析refresh方法。refresh其实是在AbstractApplicationContext类中实现的。AbstractApplicationConte...
略过前面部分逻辑,如果需要分析略过的逻辑,可以看文章 Spring Ioc源码分析系列--Bean实例化过程(二) ,这里不再赘述。 可以看到,这里会判断是否存在InstantiationAwareBeanPostProcessor类型的后置处理器,如果有,则执行其postProcessProperties()方法。我们关注的是AutowiredAnnotationBeanPostProcessor后置处理器的实现,直接...
ioc源码解析以及架构 spring spring ioc源码深度解析,SpringFramework,也就是我们常说的Spring框架,我觉得其中最核心的部分应该就是IOC容器了,Spring的IOC容器的实现也叫做DI,也就是依赖注入。这篇博客要说的就是这其中的大概的实现过程。AnnotationConfigApplicationC