本文是以初学者角度记录学习JAVA过程,无指导之意,如有错误,请各位大神不吝指教。
希望能够通过文章编写监督自我上进,与初学者共勉!!!
1,概述
Spring Framework是一个轻量级的解决方案,也是构建企业级应用程序的一站式解决方案。
Spring Framework 是一个Java平台,为开发Java应用程序提供全面的基础架构支持。Spring处理基础架构,因此您可以专注于您的应用程序。
Spring 是模块化的,允许只使用需要的部件,而无需引入多余的部分。
Spring Framework 支持声明式事务管理。
Spring被设计为非侵入式的,这意味着您的域逻辑代码通常不依赖于框架本身。
在集成层(例如数据访问层)中,将存在对数据访问技术和Spring库的一些依赖性。但是,应该很容易将这些依赖项与其余代码库隔离开来。
作为应用程序开发人员,您可以从Spring平台中受益的示例如下:使 Java 方法在数据库事务中执行,而 不必处理事务 API 。
使本地 Java 方法成为 HTTP 端点,而无需处理 Servlet API 。
使本地 Java 方法成为消息处理程序,而无需处理 JMS API 。
使本地 Java 方法成为管理操作,而无需处理 JMX API 。
2,依赖注入和控制反转
学习Spring框架之前首先要搞清两个概念,依赖注入和控制反转也是Spring学习的核心概念
控制反转-Inversion of Control 简称 IOC
依赖注入-Dependency Injection 简称 DI
Spring Framework由大约20个模块组成的功能组成。这些模块分为核心容器,数据访问/集成,Web,AOP(面向方面编程),仪器,消息传递和测试,如下图所示。
1,IOC是什么
Ioc—Inversion of Control,控制反转 是一个设计思想,不是一种技术。
在Java开发中,IOC意味着将您设计好的对象交给容器控制,而不是传统的在您对象内控制。
容器是指Spring容器,如下图,后面会给大家介绍 容器的概念及容器里都有什么。
理解好 IOC 首先要明确,谁控制谁? 控制什么? 为何要反转?哪些方面被反转了?谁控制谁,控制什么
传统的 Java SE 程序设计,我们直接在对象内部进行 new 来创建依赖对象,是程序主动去创建依赖对象,而 IOC 有专门的容器来创建这些对象,即由IOC容器来控制对象的创建。
所以,谁控制谁,当然是 IOC 控制了对象。控制了什么,主要控制了外部资源获取(不仅仅是对象,比如文件)。为何是反转,哪些方面反转了
有反转就有正转,传统应用程序是由我们自己在对象中主动控制直接获取依赖对象,也就是正转。
而反转就是由容器来创建对象及注入依赖对象。
为何是反转?因为是容器帮我们查找并注入依赖对象。对象只是被动的接受依赖对象,所以是反转。
哪些方面被反转了?依赖对象的获取被反转了。
2,IOC 能做什么,这样设计有什么好处?
IOC不是一种技术,而是一种思想。一个重要的面向对象编程法则。
传统开发模式实在类的内部创建依赖对象,从而导致类与类之间的耦合度很高。
难于测试。所以 IOC 能够协助我们设计出 松耦合,更加优良的程序。
3,DI 是什么?
DI—Dependency Injection 依赖注入
组件之间的依赖关系,由容器在运行期决定,形象的说就是 由容器 动态的将某个关系注入到组件中。依赖注入的目的并非为软件带来了更多的功能,而是为了提升组件的重用频率。并为系统搭建一个灵活,可扩展的平台。
理解好 DI 首先要明确 谁依赖谁? 为什么要依赖? 谁注入谁? 注入了什么?谁依赖谁 当然是应用程序依赖 IOC 容器
为什么要依赖 应用程序需要 IOC 容器 来提供对象 需要的外部资源
谁注入谁 IOC 容器注入应用程序的某个对象,应用程序依赖的对象。
注入了什么 注入了某个对象所需要的外部资源(包括对象、资源、数据常量)
4,IOC 和 DI 之间有什么关系?
他俩是同一个概念,不同角度的描述,IOC 控制反转 难于理解。