Spring的官网地址:https://spring.io/
1.Spring是最受欢迎的企业级java应用程序开发框架,数以百万的来自世界的开发人员使用Spring框架来创建性能好,易于测试,可重用的代码
2.Spring框架是一个开源的java平台,它最初是以Rod Johnson编写的,并且于2003年6月首次在Apache2.0许可下发布
3.Spring是轻量级的框架,其基础版本只有2MB左右的大小
4.Spring框架的核心特性是可以用于开发任何java应用程序,但是在javaEE平台上构建Web应用程序是需要扩展的,Spring框架的目标是使J2EE开发变得更容易使用,通过启用基于POJO编程模型来促进良好的编程实践
项目列表:Spring | Projects
Spring基础框架,可以视为Spring基础设施,基本上任何其他Spring项目都是以Spring Framework为基础的。
1.非侵入式:使用Spring Framework开发应用程序时,Spring对应用程序本身的结构影响非常小,对领域模型可以做到零污染,对功能性组件也只需要使用几个简单的注解进行标记,完全不用破坏原有结构,反而能将组件结构进一步简化。这使得基于Spring Framework开发应用程序时结构清晰、简洁优雅。
2.控制反转:IOC(Inversion of Control,翻转资源获取方向),把自己创建资源、向环境索取资源变成环境将资源准备好,享受资源注入
3.面向切面编程:AOP(Aspect Oriented Programming) 在不修改源代码的基础上增强代码功能
4.容器:Spring IOC是一个容器,因为它包含并管理组件对象的生命周期。组件享受了容器化的管理,替开发人员屏蔽了组件创建过程中的大量细节,极大的降低了使用门槛,大幅度提高了开发效率。
5.组件化:Spring实现了使用简单的组件配置组合成一个复杂的应用,在Spring中可以使用XML和java注解组合这些对象,这使得我们可以基于一个个功能明确、边界清晰的组件有条不紊的搭建超大型复杂应用系统
6.声明式:很多以前需要编写代码才能实现的功能,现在只需要声明需求即可由框架代为实现
7.一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。而且Spring旗下的项目已经覆盖广泛领域,很多方面的功能性需求库在Spring Framework的基础上全部使用Spring实现
Core Container:核心容器,在Spring环境下使用任何功能都必须基于IOC容器
AOP&Aspects:面向切面编程
Testing:提供了对junit或TestNG测试框架的整合
Data Access / Integration:提供了对数据访问/集成的功能
SpringMVC:提供了面向Web应用程序的集成功能
IOC:Inversion of Control ,翻译为反转控制
1. 获取资源的传统方式
传统的方式是组件主动的从容器中获取所需要的资源,但在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式,增加了学习成本,同时降低了开发效率
2.反转控制方式获取资源
反转控制的思想完全颠覆了应用程序组件获取资源的传统方式:反转了资源的获取方向-改由容器主动的将资源推送给需要的组件,开发人员不需要知道容器是如何创建对象的,只需要提供接收资源的方式即可,极大的降低了学习成本,提高了开发效率。这种行为被称为查找的被动形式
3.DI
DI:Dependency Injection ,翻译为依赖注入
DI是IOC的另一种表述方式:即组件以一些预先定义好的方式接收来自于容器的资源注入。相对于IOC而言,这种表述更直接。
所以IOC就是一种反转控制的思想,而DI是对IOC的一种具体实现
Spring的IOC容器就是IOC思想的一个落地的产品实现。IOC容器中管理的组件也叫bean。在创建bean之前,首先需要创建IOC容器,Spring提供了IOC容器的两种实现方式:
1.BeanFactory
这是IOC容器的基本实现,是Spring内部使用的接口,面向Spring本身,不提供给开发人员使用
2.ApplicationContext
是BeanFactory的子接口,提供了更多高级特性,面向Spring的使用者,几乎所有场合都使用,ApplicationContext而不是底层的BeanFactory
注意:
依赖注入:就是为spring所管理的对象中的属性进行赋值