Spring的入门知识点总结

一 .  Spring概述

1.1 Spring 是什么?

  Spring是一个开源的企业级应用程序Java开发框架。目的是为了简化企业级应用程序开发。

1.2 Spring的特性

     (1)轻量级 

  Spring框架基础版本的包小,启动占用的资源少。(与Struts2相比)

  (2)非侵入式

       我们的代码不需要与Spring框架的类或者接口发生依赖关系。

      (3)IOC功能

       Spring提供了IOC容器,管理对象和管理对象之间的依赖关系。我们一般都是在程序内部的代码来new对象和管理对象之间的依赖关系,现在把控制权交给IOC容器。

      (4)DI功能

       DI是依赖注入。是指Spring IOC容器将被依赖的对象注入到依赖的对象中。举个例子:对象A依赖对象B,那么Spring根据依赖关系,将对象A注入到对象B中。

      (5)AOP编程

       AOP,面向切面编程,是一种编程思想。他将代码分成核心关注点和横切关注点,然后要求横切关注点必须从代码中剥离出来,与核心关注点解耦。那么解耦了,怎么使用横切关注点功能呢,我们可以通过声明式配置,动态的织入横切关注点的代码。

      (6)一站式

       根据Spring IOC的特点,可以很方便集成第三方框架或者技术。

二. 体系结构

      最下层是test,然后依次核心容器层--->AOP等---->数据访问/集成,Web

    核心容器层包括:Spring-core, Spring-beans, spring-context, spring-expression。

       (1)spring core:框架的基础组成,提供了IOC和DI功能。

       (2)spring beans:依赖core,提供了BeanFactory。

       (3)spring context:基于core和beans,主要接口AppicationContext。

       (4)spring expression:表达式语言,用于运行时查询和操作对象。比如设置属性,根据name去ioc容器获取bean。

       数据访问/集成:JDBC、ORM。

       (1)JDBC:一组规范化的接口。各个数据厂商的数据库驱动软件需要实现这些接口。我们可以通过查询JDBC的接口和驱动器程序来操作对应的数据库。

       (2)ORM:对象关系映射,是指将对象和数据库中的表建立映射关系,我们可以通过操作对象来实现持久化(读写数据库)。JPA是一个ORM框架的规范,Hibernate是JPA的实现。

  Web:Web、WebMVC、WebScoket

三. IOC容器

  3.1 BeanFactory是框架的*IOC容器接口,ApplicationContext接口间接继承了BeanFactory接口。

  ApplicationContext常见的实现类:FileSystemXmlApplication 、ClassPathXmlApplication、WebXmlApplication。

  3.2 Bean

       Bean的加载过程:

   (1)Spring IOC容器根据配置文件、Java配置类、Spring自带的注解(如@Service、@Controller等)来获取bean的配置信息。

      (2)Spring IOC容器根据bean配置信息去查找bean的实现类,并且实例化对象放到容器中。

      (3)应用程序再通过Spring IOC容器获取对象。

       Bean的作用域:

      (1)singleton 单例

      (2)prototype 每次从IOC容器获取bean,都生成一个新的bean

   (3)request 一个请求生成一个bean

      (4)session 一个会话同享一个bean

   (5)global session 全局会话同享一个bean

      Bean生命周期:实例化--->属性赋值---->一系列方法及接口(!!!)--->初始化--->使用--->销毁。

      Bean后置处理器,接口为BeanPostProcess,允许在调用初始化方法前后对 Bean 进行额外的处理。

      Bean的注入:set注入和构造器注入。

      Sprig自动装配:byType,比如@Autowired;byName,比如@Resource

四. AOP

4.1 一些概念

     切入点:指定要织入通知的一系列方法的位置。通常用表达式表示,注解为@PointCut,支持扫描拥有注解的方法。

     连接点:可以织入通知的所有方法。

     通知:具体的代码实现。

     切面:切入点+通知。

    通知的类型:@Before:在方法执行前;@After:在方法执行完后,不论是否有抛出异常;@AfterReurning:在方法成功执行之后;@AfterThrowing:在方法抛出异常的时候;@Aroud:在方法执行前和方法执行后。

 4.2 AOP的实现

    Spring中使用代理模式来实现AOP,通常是使用JDK动态代理(代理类需要实现被代理类的指定接口),如果这个被代理类没有接口,那么就使用GCLib动态代理(代理类需要继承被代理类)来实现。

    一些AOP的应用:声明式事物、日志等。

四. Spring Web MVC

    MVC,M->Model,模型;V-->View 视图;C--->Controller 控制器。Spring MVC围绕DispatcherServlet来实现的。

 (1)一个HTTP请求进来,DispatcherServlet拦截到请求。

    (2)DispatcherServlet将请求转发给hadler mapping,hanlder mapping解析,告诉dispatcherServlet需要调用哪一个controller的方法。

    (3)DispatcherServlet调用这个controller的Handler Adapter。

    (4)Handler Adapter调用这个controller,controller执行完后,返回ModelAndView给Handler Adapter,Hanlder Adapter转交给DispatcherServlet。

    (5)DispatcherServlet调用视图解析器,视图解析器解析ModelAndView,将结果Model、View返回给DispatcherServlet。

    (6)DispatcherServlet渲染View(如果有的化,没有就直接返回model给用户),渲染完后返回给用户。