Spring是一个分层的JavaSE及JavaEE应用于全栈的轻量级(所谓轻量级就是spring框架在系统初始化的时候不用加载所有的服务,为系统节约了资源 )开源框架,以IOC(控制反转DI依赖注入)和AOP(面向切面编程)为核心,提供了表现层SpringMVC和持久层SpringJDBC以及业务层事务管理等众多模块的企业级应用技术,还能整合开源世界中众多著名的第三方框架和类库,逐渐成为使用最多的JavaEE企业应用开源框架
2.为什么要使用 springspring的本质是管理软件中的对象,即对象的创建和对象之间的维护 的关系
2.1简介-
目的:解决企业应用开发的复杂性
-
功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
-
范围:任何Java应用
简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
2.2轻量从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
2.3控制反转Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
2.4面向切面Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
2.5容器Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
2.6框架Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。
什么是程序的耦合耦合性,也称为耦合度,是对模块间关联程度的度量。耦合的强弱取决于模块间的接口的复杂性,调用模块的方式及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系
在软件工程中,耦合度指定就是对象之间的依赖关系,对象之间的依赖程度越高,耦合性越高,维护成本越高
降低程序之间的依赖程度,即降低程度之间的耦合度的过程叫解耦
总结:在软件工程中,耦合指的是对象之间的依赖关系。对象之间的依赖程度越高,耦合度就越高,维护成本越高
3.IOC控制反转 3.1谁控制谁,控制了什么?传统的JavaSE程序设计,是直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IOC是专门一个容器来创建对象;即由容器控制对象的创建、初始化、销毁
3.2为何是反转,哪些方面反转了?有反转就有正转,传统应用程序是由程序员自己在对象中主动控制去直接获取依赖对象,而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?获得依赖对象的过程被反转
IOC也被称为DI,即:依赖注入
描述了对象的定义和依赖的一个过程,也就是说,依赖的对象通过构造参数、工厂方法参数或属性注入,当对象实例化后依赖度对象才被创建,当创建bean后容器注入这些依赖对象
理解DI的关键是:
谁依赖谁:对象依赖IOC容器
为什么需要依赖:应用程序需要IOC容器来提供对象和该对象需要的外部资源
谁注入谁:IOC容器注入应用程序中的某个对象,应用程序依赖的对象
注入了什么:注入了某个对象所需的外部资源(包括对象、资源、常量数据等)
3.3IOC(控制反转)和DI(依赖注入)有什么关系是同一个概念的不同角度描述
IOC强调的是容器和对象的控制权发生了反转,而DI强调的是对象的依赖由容器进行注入,广义上IOC是一种软件开发模式,也就是说还可以通过别的方式实现,而DI只是其中一种
3.4IOC(控制反转)和DI(依赖注入)有什么区别控制反转:创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。
依赖注入:创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。



