死磕Spring源码-常见底层核心注解

一:Spring框架功能整体介绍


 


二:根据Spring架构图可知,包含以上的模块儿。下面逐个模块儿进行解释。

1:IOC 和 DI(Inversion of Control I DependencyInjection ( IoC/DI ) 最最最最核心的功能是 :通过多级缓存解决循环依赖问题。

2:Spring Core Container:

        模块作用:Core 和 Beans 模块是框架的基础部分,提供 IoC (转控制)和依赖注入特性,Spring Core也是核心层,拥有着BeanFactory这个强大的工厂,是所有bean的管理器。负责发现、创建并处理bean之间的关系的一个工具包。提供了对工厂模式的经典实现,实现对程序单例模式的需要。并真 正地允许你从程序逻辑中分离出依赖关系和配置。core主要包含 Spring 框架基本的核心工具类, Spring 的其他组件都要用到这个包 里的类, Core模块是其他组件的基本核心。

Spring Beans(BeanFactory):其中最重要的两个接口是:BeanFactory和BeanDefinition。BeanFacoty:是springIOC核心工厂接口,根据对象的依赖关系进行创建对象。ApplicationContext就是其中的一个具体实现。要定义一个工厂必须满足三个条件1,需要持有各种bean的定义2,需要持有Bean之间的依赖关系3,需要读取xml配置文件的工具。说白了。BeanFactory就是负责对bean的创建。

3:Context

context负责处理BeanFactory,主要的接口是ApplicationContext。ApplicationContext接口继承了ListableBeanFactory和HierarchicalBeanFactory接口他们都继承了BeanFactory接口。ApplicationContext模构建于 Core 和 Beans 模块基础之上,提供了一种类似JNDI 注册器的框 架式的对象访问方法。 Context 模块继承了 Beans 的特性,为 Spring 核心提供了大量扩展,添加了对国际化(例如资源绑定)、事件传播、资源加载和对 Context 的透明创 建的支持。 Context 模块同时也支持 J2EE 的一些特 性, ApplicationContext 接口是 Context 模块的关键。

4:ApplicationContext和BeanFactory的主要区别

·1,BeanFactory在启动的时候不会去实例化Bean,只有从容器中拿Bean的时候才会去实例化;BeanFactory是懒加载,BeanFactory需要手动注册。优点是:应用启动的时候占用资源很少;对资源要求较高的应用,比较有优势;

2,ApplicationContext在启动的时候就把所有的Bean全部实例化了。它还可以为Bean配置lazy-init=true来让Bean延迟实例化; 优点是1. 所有的Bean在启动的时候都加载,系统运行的速度快; 2. 在启动的时候所有的Bean都加载了,我们就能在系统启动的时候,尽早的发现系统中的配置问题 3. 建议web应用,在启动的时候就把所有的Bean都加载了。(把费时的操作放到系统启动中完成)

5:Expression Language(表达式语言)

模块提供了强大的表达式语言,用于在运行时查询和操纵对象。 它是 JSP 2.1 规范中定义的 unifedexpression language 的扩展。 该语言支持设直/获取属 性的值,属性的分配,方法的调用,访问数组上下文( accessiong the context of arrays )、 容器和索引器、逻辑和算术运算符、命名变量。以及从Spring的 IoC 容器中根据名称检 索对象。 它也支持 list 投影、选择和一般的 list 聚合

三:Spring Data Access/Integration

1:jdbc

模块提供了一个 JDBC 抽象层,它可以消除冗长的 JDBC 编码和解析数据库厂 商特有的错误代码。这个模块包含了 Spring 对 JDBC 数据访问进行封装的所有类

2:ORM 模块为流行的对象-关系映射 API

如 JPA、 JDO、 Hibernate、 iBatis 等,提供了 一个交互层。 利用 ORM 封装包,可以混合使用所。有 Spring 提供的特性进行 O/R 映射, 如前边提到的简单声 明性事务管理。OXM 模块提供了一个对 ObjecνXML 映射实现的抽象层。Object/XML 映射实现包括 JAXB、 Castor、 XMLBeans、 JiBX 和 XStrearn

3:JMS ( Java Messaging Service )

模块主要包含了 一些制造和消 费消息的特性。

4:Transaction

支持编程和声明性的事务管理,这些事务类必须实现特定的接口,并 且对所有的 POJO 都适用

5:Spring Web

Web 模块:提供了基础的面向 Web 的集成特性c 例如,多文件上传、使用 servlet listeners 初始化。IoC 容器以及一个面向 Web 的应用上下文。 它还包含 Spring 远程支持中 Web 的相关部分。

6:Spring Aop

AOP是切面编程。Aop Aspects 模块提供了对 AspectJ 的集成支持 。Instrumentation 模块提供了 class instrumentation 支持和 classloader 实现,使得可以在特定的应用服务器上使用。

7:Test

Test 模块支持使用 JUnit 和 TestNG 对 Spring 组件进行测试

 


四:Spring 容器继承图

 

 


一:什么是IOC?以及IOC的作用

上文提到IOC最最最核心的功能是通过多级缓存解决依赖注入问题。IOC被称为控制反转/依赖注入。什么是控制反转?我觉得有必要先了解软件设计的一个重要思想:依赖倒置原则(Dependency Inversion Principle)

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值