1.2浅谈Spring-Spring结构

时隔很多天的我又回来....最近发展了一下自己的爱好,所以拖了很长时间。

 

前面我们从概念性上分析了spring的特性

这里我们附上Spring框架的结构图

我们简单的来说一些这个框架图

我们从下往上看

1.测试部分Test

Spring提供的测试部分非常重要,这个SpringTest可以帮助我们在服务器上完成测试(即不用每次都重启服务器去测试),跟Junit的测试一样。而且这个SpringTest是可以配合Junit使用的。

2.Spring的核心部分

这里有4个部分 Beans Core Context ExpressionLanguage

Beans 是关于创建Bean和管理Bean的一些类

Core 部分就不多说了,一般核心部分都是最底层的东西

Context 负责上下文的一些类

ExpressionLanguage EL表达式。跟Struts2的OGNL表达式类似

3.AOP,Aspects

这个部分的Instrumentation我没用过,看到的也很少,所以这里就不提了。欢迎评论区补充。这层是切面层。关于AOP,Aspects这里不再做过多的解释了

4.WEB层

主要是关联一些其他的框架,如Struts,SpringMVC,还有一些远程调用。

5.Data Access层

这部分是事务管理和数据源部分。spring有自己的jdbc模版,jdbcTemplate。同样Spring也为其他ORM框架提供了交互层,如:Hibernate,Mybatis,JPA等

 

IOC是如何工作的呢?

这就是本章我们要研究的问题

1.spring容器

前面我们讲了SpringIOC容器的概念。现在我们通过源码来看一下,SpringIOC容器是什么。

Spring的容器并不是只有一个,Spring自带了多个容器实现,大致可以分为两类

①BeanFactory,提供最基本的DI功能

图1.1 beanFactory的方法

再看一下它的基本实现类

 

②应用上下文ApplicationContext,它是基于BeanFactory。除了支持基本的DI功能,还支持从属性文件解析文本,以及发布事件给事件监听者,该接口继承多个其他的接口。

 

图1.2-1 Application接口

我们常用的几个Spring容器的具体实现有:

1.ClassPathXmlApplicationContext

2.FileSystemXmlApplicationContext

这两个是我们在本地引用xml配置文件时用的IOC容器,web的IOC容器我们在后面讨论。这个小节我们讨论IOC容器的具体工作。

Spring加载bean通常称为装配,以下是其中一种模式(XML显示装配)

ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("beans.xml");
Car car =app.getBean(Car.class);
System.out.println(car.getBrand()+","+car.getDesc());

以上一段代码包含以下几点:

1.读取配置文件beans.xml

2.根据beans.xml中的配置,找到对应的类的配置并实例化

3.调用实例化后的实例。

实际这3步里执行了多少逻辑对我们是透明的,这几步也许就是它的原理了..

蓝色颜色标注的为相同的(因为线确实扯不过来....),红色的为基本的常用的Spring容器

这是spring的IOC容器的体系结构,了解一下。下一节,来了解IOC容器是如何初始化的。

posted @ 2018-10-12 20:48  苏打水了面包  阅读(219)  评论(1编辑  收藏  举报