Spring的认识

Spring的认识

Spring是什么
spring定义
	Spring是java应用广泛的框架;是一个轻量级DI/ioc和Aop容器的开源框架.Spring提倡以"最少侵入"的方式来管理应用中的代码,这意味着我们可以随时安装或卸载Spring.
Spring几个核心模块

spring体系图

Spring用来做什么
Spring能解决什么问题
	管理我们项目中的bean,编码过成中进行拆解,运行时进行装配,来达到解耦的目标。
BeanFacory和FactoryBean
BeanFactory :interface
	getBean(beanName):
		1.根据beanName从Ioc中获得一个实例Bean 
		2.bean为是延迟加载,getBean的时候进行初始化
		 初始化Bean
		 依赖注入
FactoryBean :interface 
	Spring提供的接口,用户可能实现这个接口,来创建自己的bean工厂.自定义Bean增强.
	getObject()
ApplicationContext
继承了DefaultListableFactory
实现了BeanFactory
AbstractApplicationContext
	refresh();//初始化bean容器
DefaultListableBeanFactory:默认实现,可以扩展
	beanDefinitionMap	
BeanDefinition :存储bean的配置信息
	beanClassName:类名
	lazyInit:是否延时加载
	factoryBeanName:存在工厂的name
ApplicationContextAware
	setApplicationContext()注入容器;通过解耦方式获得IOC容器的顶层设计 后面将通过一个监听器去扫描
手写一个ioc(自己听课做的笔记)
1.定位配置文件
	BeanDefinitionReader : 实现读取配置文件功能
	ApplicationContext:构造函数中添加locations
	将loadBeanDefinitions 返回值List<DeanDefinition>
	Prooerties config 赋值
	doScaner(config.scanPackage);
	loadBeanDefinitions () :
		判断是否为interface:需要实现类 赋值给beanClassName(目前先进行continue)
		doCreateBeanDefinition
			1.setBeanName()
			2.setBeanFactoryName();
		
2.加载配置文件
	loadBeanDefinitions(String... locations);
3.注册bean到容器中:beanDefinitionMap(伪ioc容器)
	doRegisterBeanDefinition(beanDefinitions);
4.将非延迟加载的类提前初始化
	doAutowired() //只处理非延时加载情况
	          ||
	          \/
	      getBean();==> doCreateBean 1.初始化 insatiateBean(BeanName,BeanDefinition) 2.注入 populateBean(BeanName,BeanDefinition,BeanWrapper);
	      *为什么先初始化,在依赖注入
	      防止循环依赖,class A {private B} class B {private A}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值