Spring的理解

  我们经常听见Spring框架,但什么是Spring框架呢,网上查了查,说的都很晦涩,如何更好的理解它呢,我列出来一下我的认知和看法,说的不对理解不对的还请指导!

1、Spring是什么?怎么抽象简单的理解Spring?

  

  Spring是一个开源框架(就是一个容器,Spring模块都是在核心容器之上构建的),实现了工厂模式的工厂类,这个类名为BeanFactory(接口),在程序中通常用他的子类ApplicationContext。

2、Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

  2.1Spring的IOC模块

    IOC(控制反转)就是在有了工厂模式后,当需要某个类的对象时,就不再需要new指定的类,而是调用工厂中的方法即可。也就不需要关心对象的创建过程。甚至有时候也许你需要的对象只要是某种大分类的类型就可以了,而不必是某个指定的类型。不会过渡依赖某个类,这些类都是易于被替换的,以提高整个项目的可维护性。

    DI(依赖注入)也是IOC的重要实现。一个对象的创建往往会涉及到其他对象的创建,这就是依赖。IOC机制既然负责了对象的创建,那么这个依赖关系也就必须由IOC容器负责起来负责的方式就是DI——依赖注入,通过将依赖关系写入配置文件,然后在创建有依赖关系的对象时,由IOC容器注入依赖的对象。如在创建A时,检查到有依赖关系,IOC容器就把A依赖的对象B创建后注入到A中(组装,通过反射机制实现),然后把A返回给对象请求者,完成工作。

  2.2Spring的AOP模块

    AOP(面向切面编程)就是系统中有很多各不相干的类的方法,在这些众多方法中要加入某种系统功能的代码,如加入日志,权限判断,异常处理,这种应用称为AOP。

    实现AOP功能采用的是代理技术,客户端程序不再调用目标,而调用代理类,代理类与目标类对外具有相同的方法声明。

    有两种方式可以实现相同的方法声明,一是实现相同的接口,二是作为目标的子类。在JDK中采用Proxy类,产生动态代理的方式为某个接口生成实现类,如果要为某个类生成子类,则采用CGLIB。系统功能的代理以Advice对象进行提供,要创建出代理对象,至少需要目标类和Advice类。Spring提供了这种支持,只需要在Spring配置文件中配置这两个元素即可实现代理和AOP功能。

3、如何学好Spring

  

  要学好Spring,首先要明确Spring是个什么东西,能帮我们做些什么事情,知道了这些然后做个简单的例子,这样就基本知道怎么使用Spring了。Spring核心是IOC容器,所以一定要透彻理解什么是IOC容器,以及如何配置及使用容器,其他所有技术都是基于容器实现的;理解好IOC后,接下来是面向切面编程AOP,首先还是明确概念,基本配置,最后是实现原理,接下来就是数据库事务管理,其实Spring管理事务是通过面向切面编程实现的,所以基础很重要,IOC容器和面向切面编程搞定后,其余都是基于这俩东西的实现,学起来就更加轻松了。要学好Spring不能急,一定要把基础打牢,基础牢固了,这就是磨刀不误砍柴工。

  

原文地址:https://www.cnblogs.com/karrya/p/10851921.html