初识Spring

来源:互联网 发布:windows连不上aws 编辑:程序博客网 时间:2024/05/21 23:32

1、Spring的引入


  • 问题1:代码耦合度高问题
    在web项目中,Service层依赖DAO,Action中依赖Service,代码耦合度高!
    解决方案:简单工厂模式,在配置文件中指定要创建哪一类的对象.‘’

  • 问题2:控制事务繁琐
    必须在需要控制事务的地方,手动用代码完成几乎相同的事务控制逻辑,效率低下,且责任不分离!
    解决方案:面向切面编程(AOP)

2、Spring简介


2.1 概述

  • Spring是一个轻量级的DI/IoC和AOP容器的开源框架,来源于Rod Johnson 在其著作《Expert one on one J2EE design and development》中阐述的部分理念和原型衍生而来。

  • Spring提倡以”最少侵入”的方式来管理应用中的代码,这意味着我们可以随时安装或卸载Spring。

2.2 Spring的优势:

  1. 低侵入/低耦合(降低组件之间的耦合度,实现软件各层之间的解耦。)
  2. 声明式事务管理(XML/注解)
  3. 方便集成其他框架
  4. 降低JavaEE开发难度
  5. Spring框架中包括JavaEE 三层的每一层的解决方案 (一站式)

3、Spring主要功能和思想

3.1 IoC(Inverse of Control,控制反转)

所谓IoC,是指将原本在程序中手动创建对象的控制权,交给Spring框架帮我们管理。调用者只管从容器中调用需要使用的对象,而不关心对象的创建过程。

3.2 DI(Dependency Injection)

依赖注入,指Spring创建对象的过程中,将对象依赖的属性通过配置的方式自动的设置给当前创建的对象。

3.2 Spring中的AOP

  • AOP(Aspect Orientation Programming),面向切面编程。

    1. 目的: 将一些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理,日志管理,权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
    2. 简而言之: 将多个方法前后共同的代码抽离出来,使用动态代理机制来控制,先执行抽离出来的方法,后执行真实的方法。
  • Spring中AOP使用动态代理实现

    1. 如果一个类实现了接口,那么Spring使用JDK的动态代理模式实现AOP;
    2. 如果一个类没有实现接口与,那么Spring使用CGLIB的动态代理模式实现AOP。
  • AOP中的概念

    1. 切入点(Pointcut):在哪些类,哪些方法上切入(where);
    2. 增强(Advice):在方法执行的什么时机(when:方法前/方法后/方法前后)做什么(what:增强的功能);
    3. 切面(Aspect):切面=切入点+通知,通俗点就是:什么时机,什么地点,做什么!
    4. 织入(Weaving):把切面加入到对象,并创建出代理对象的过程。(该过程由Spring来完成)。