Spring中最核心的4个jar
Spring-beans
Spring-core
Spring-contex
Spring-expression
一个最简单的spring工程,理论上只需要一个jar就够了
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
Spring中XSD引入
XSD是编写xml文件的一种规范,有了这个规范才能校验xml是否写错,在spring中同样有XSD规范。
<context:component-scanbase-package="com.包名"/>
就必须引入这个标签对应的XSD文件
Spring容器加载方式
1)类路径获取配置文件
ApplicationContext
applicationContext=new ClassPathXmlApplicationContext("spring.xml");
2)文件系统路径获取配置文件(绝对路径)
ApplicationContext
applicationContext=new FileSystemXmlApplicationContext("项目文件所在的根路径");
3)无配置文件加载容器
ApplicationContext
applicationContext=new AnnotationConfigApplicationContext("要扫描的类");
4)Springboot加载容器
Spring容器加载和新方法
AbstractApplicationContext.refresh()方法;refresh()方法是spring容器启动过程中的核心方法,spring加载必须要执行该方法,SpringBoot内置tomcat启动时是通过refreshContext()加载的spring容器;
IOC容器的初始化流程
主要分三步:
- Bean的创建
- Bean的赋值
- Bean的初始化,放到IOC容器中,即Map,ioc底层就是一个大Map
Ioc是怎么加载的
Public class OrderController{
@aotowired
OrderServicelmpl orderServicelmpl;
}
根据配置文件,创建容器相关的对象;“orderServicelmpl”注入到ioc,首字母小写作为key;底层实现
Map<String, Object> map = New HashMap()<>;
map.put("orderServicelmpl", new OrderServicelmpl());
跟进refresh()
重点看截图上的注释: