1、spring历史
spring是一个开源框架,2002年10月Rod Johnson创建,在《Expert One-on-One J2EE Design and Development》一书中第一次提出了spring核心思想,使Java EE开发变得更加简单。
2、spring核心jar包
spring-context,logback-classic(spring日志包)
3、spring自定义标签的引入
自定义标签,必须引入xsd文件,可以在jar包对应的spring.schemas里面找到对应的命名空间和xsd对应的路径
4、spring容器的加载方式
AnnotionConfigApplicationContext(“com.xxx”)(注解方式)、
ClassPathXmlApplicationContext("spring.xml")、基于xml加载spring配置文件,启动spring容器
FileSystemXmlApplicationContext(绝对路径)、
EmbeddedWebApplicationContext(springboot tomcat启动,加载方式)
5、spring容器加载流程
模板方法模式:有一个骨架类和钩子,整体流程由骨架类实现,某些特定方法由子类实现。核心是钩子方法。
委托模式:某个功能本类不实现,通过委托给其他类来实现。
装饰模式:对原有类的增强。核心是持有被装饰类的引用。
SPI设计思想:通过读取配置文件获取实现类。
BeanDefinition作用:spring实例化必须的对象。
spring入口和xml解析
总结:
1、将配置文件location放到内存,refresh beanFactory
2、从内存获取配置文件location,通过流的方式将配置文件读取到内存中,通过inputsource读取配置文件,并且将配置文件存到Document对象中
3、解析我们的Bean对象,并放到内存里面
4、解析包括我们的默认标签和自定义标签的解析
5、默认标签解析 分为三步。
第一步:创建GenericBeanDefinition对象,将默认元素和子元素(lookupmethod,replacemothod)放进去。包装成BeanDefinitionHolder对象
第二步:装饰我们的holder对象,根据标签属性,p:,c:。
第三步:将我们的对象放到内存里面,concurrentMap