Spring知识详解

 

Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。兴起于2003年,其主要的核心思想IOC(控制反转)和AOP(面向切面编程),其中展现出的优秀设计模式主要有工厂模式和代理模式。

IOC的实现建立在工厂模式,java反射机制和jdk操作XML的DOM解析方式之上。其核心思想是改变传统的调用者创建被调用者实例的模式,而将创建被调用者实例的功能交给Spring来实现,并由Spring来实现依赖注入(DI)。

AOP利用一种称为“横切”的技术,实现代码的高可用性。实现AOP技术主要有两种方式动态代理和静态织入。Spring中AOP(Aspect Oriented Programming)的实现在CGLIB提供的类代理和JDK提供的接口代理前提下实现。常见的体现AOP思想的示例由Fillter(过滤器)和Struts2的拦截器

Spring主要优点有降低组件之间的耦合度,实现软件各层之间的解。提供对众多插件的支持,利用AOP技术可以更好的实现权限拦截、监控,提供了对事物的支持。

Spring的整体架构图

 

 

Spring架构主要分为五大模块,分别是Core Container、Data Access/Integration、Web、AOP、Test。

Core Container(核心容器)包含有Core、Beans、Context、Expression language模块。Core和Beans模块是框架的基础部分,提供IOC(控制反转)和依赖注入的特性。这里的基础概念是BeanFactory,它提供对工厂模式的经典实现来消除对程序性单例模式的需求,病真正的允许你从程序逻辑中分离出依赖关系好额配置

Data Access/Integration层包含JDBC、ORM、OXM、JMS和Transaction的模块。

Web上下文模块建立在应用程序的上下文模块之上,为基于web的应用程序提供上下文。所以Spring框架支持与Strusts的集成。Web模块还简化处理大部分请求以及将请求参数绑定到域对象的工作,Web层包含了Web、Web-Servlet、Web-Struts和Web-Prolet模块。

面向切面编程(AOP)就是对软件系统不同关注点的分离,开发者通过拦截方法调用并在方法调用前后添加辅助代码。AOP利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多了类的公共行为封装到一个可重用的模块,并将其命名为“Aspect”,即切面。

 

Test模块提供对Junit和TestNG对Spring组件进行测试。

 

IOC(控制反转)和AOP(面向切面编程)是Spring的灵魂。Spring的IoC容器是Spring的核心,spring AOP是spring框架的重要组成部分。

AOP(Aspect Oriented Programming)的实现是建立在代理模式下、CGLIB提供的类代理和JDK提供的接口代理,

主要的核心类ProxyFactoryBean

实现AOP的技术的两大方式:

  1. 采用动态代理技术,利用截取消息的方式,对改消息进行装饰,一取代原有对象行为的执行。
  2. 采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。

体现AOP编程思想的最佳示例:Filter的实现和struts2的拦截器的实现

IOC(Inversion of Control)是现实建立在工厂模式、java反射机制和jdk操作XML的DOM解析方式。

IOC(Inversion of Control)和依赖注入(Dependency Injection)其实是一个东西,不同的名字。

对其通俗的理解,在传统的设计中,当调用者需要被调用者协助时,通常由调用者来创建被调用者的实例。但在Spring中却不是这样,Spring中创建被调用者实例的工作通常由spring容器来完成,然后注入调用者。,因此也被称为依赖注入(DI),依赖注入和控制反转是同一个概念。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值