Spring学习(一)------DI,IOC,Bean

什么是Spring

目的:解决企业应用开发的复杂性。
功能:使用基本的JavaBean代替EJB,并提供更多的企业应用功能。
优点:使用IOC容器,架构对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注应用逻辑。
核心模块:Core:spring-core。整个框架的核心工具,其他模块都要使用该包里面的类。
Beans:spring-beans。Spring定义Bean的支持,负责访问配置文件,创建和管理 bean,支持依赖注入和控制反转的相关操作。bean工厂类就在这个jar包中。
Context:spring-context。spring运行时的容器,在Core和Beans的基础上,提供对Spring上下文支持,ApplicationContext是该包的关键,通过它,可以方便快捷的取出依赖注入的bean。
spring-expression:spring表达式语言,帮助spring在运行你时查询对象和操作对象。支持设置/获取对象的属性值,方法调用。
AOP模块:spring-aop:对于代理AOP的支持。spring-Aspects:对于AspectJ的AOP支持。
Web模块:spring-web。提供基础的web功能,在Web项目中提供Spring容器。
spring-webmvc:提供基础Servlet的SpringMVC。
Spring-WebSocket:提供WebSocket功能。
spring-webmvc-portlet:提供portlet支持。
数据库模块:spring-jdbc;spring-tx;spring-orm;spring-oxm;spring-jms。

Maven

Maven:是一个项目管理工具。基于项目对象模型POM思想。我们可以把maven当做一个jar包管理工具,以前我们的项目都是本地导入jar,而现在只需要配置pom脚本,将我们的jar包脚本配置到pom文件中即可,即由本地依赖改为远程依赖。maven工具会根据脚本从公共库中下载jar包,和本地依赖没有什么区别。

依赖注入

依赖注入:Dependency Injection。简称DI。与控制反转的IOC的含义相同,只不过这两个称呼是从两个角度描述同一个概念。简单来说,没有依赖注入之前,我们都是硬编码方式,new对象,然后赋值给其他对象,让他们能相互认识和协作。这里面最痛苦的就是我们需要用代码方式管理他们的生命周期。
依赖注入,提供了装配能力,框架负责new对象,以及把他们组织起来,我们唯一需要做的就是调用业务方法。在使用spring框架之后,对象的实例不再由调用者来创建,而是由spring容器创建,spring容器还会负责程序之间的关系,而不是又调用者的程序代码直接控制,这样,控制权由应用代码转移到了spring容器,控制发生了反转,这就是spring的IOC。
从spring容器的角度来看,spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入它依赖的实例,在这就是spring的依赖注入。

IOC

这是spring核心,贯穿始终。所谓IOC,对spring框架来说,就是由spring来控制对象的生命周期和对象之间的关系。
spring所倡导的开发方式就是:所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西,所有的类的创建,销毁都是由spring来控制,也就是说控制对象生命周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。

spring中的Bean

如果把Spring看做一个大型工厂,则spring容器中的bean就是该工厂的产品,要想使用这个工厂生产和管理bean,就需要在配置文件中告诉它需要哪些bean。以及需要使用何种方式将这些bean装配到一起。其实bean的本事就是java中的类,而spring中bean其实就是对实体类的引用,来生产java类对象,从而实现生产和管理bean。
spring容器支持两种格式的配置文件;Properties文件和XML文件。在实际开发中,最常使用的是XML文件格式的配置方式,这种配置方式是通过XML文件来注册并管理Bean之间的依赖关系。

你可能感兴趣的:(Spring)