Spring简介

Spring是一个轻量级的IOC和AOP容器框架。是为Java应用程序提供基础服务的一套框架,目的是为了简化企业应用程序的开发,使得程序员只需要关注业务需求;

  • Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);
  • Spring Core:核心类库,所有功能都依赖于该类库,提供IOC和DI服务;
  • Spring AOP:AOP切面服务;
  • Spring Web:提供了基本的面向Web的综合特性,提供常用框架如SpringMVC的支持,Spring能管理这些框架,将Spring的资源注入给框架,也能在这些框架的前后加入拦截器;
  • Spring MVC:提供面向Web应用的Model-View-Controller,及MVC实现
  • Spring DAO:对JDBC的抽象封装,简化数据访问的异常处理,并能统一管理JDBC事务;
  • Spring ORM:对现有的ORM框架的支持如(MyBatis,Hibernate);

Spring的优点

  • Spring低侵入式设计,代码的污染极低;
  • Spring的DI机制将对象之间的依赖关系交由框架处理,减低组件的耦合;
  • Spring提供了AOP技术,将业务以外一些通用的进行抽取复用,如安全,事务,日志,权限等进行集中式管理;
  • Spring对于主流应用框架提供了集成支持;

    Spring IOC

  • IOC就是控制反转,指创建对象的控制权转移给了Spring框架进行管理,而不需要程序员手动new对象,并由Spring根据配置文件去创建实例和管理各个实例之间的依赖关系,对象与对象直接松散耦合,也利于功能的复用。DI依赖注入和控制反转是同一个概念的不同角度的描述,即应用程序在运行时依赖IOC容器来动态注入对象需要的外部依赖;
  • SpringIOC有三种方式注入:构造器注入、setter方法注入、注解注入

    Spring AOP

  • OOP面向对象,允许开发者定义纵向的关系,但是不适用于定义横向的关系,会导致大量代码重复,而不利于各模块的重用;
  • AOP面向切面,作为OOP面向对象的扩展,用于将一些与业务逻辑无关,但是却共通的的代码抽取封装为一个可重用的模块,这个模块被命名为”切面Aspect”,减少重复代码,降低耦合,提高系统可维护性;
  • AOP实现关键在于代理模式,AOP代理主要分为动态代理(JDK Or CGlib)和静态代理AspectJ;
  • JDK动态代理核心是InvocationHanlder接口和Proxy类,在获取代理对象时,使用Proxy类来动态创建目标类的代理类;

//TODO