美文网首页
Spring学习笔记 - 第002天

Spring学习笔记 - 第002天

作者: 迷茫o | 来源:发表于2017-03-16 19:40 被阅读0次

    Spring 详解

    概述

    Spring是Java企业级开发的一站式选择,它的出现终结了重量级Java企业开发技术(EJB 2.x)的时代。Spring使用了更简单、更轻量级的编程模型,使得基于POJO开发Java企业级应用成为可能,同时也影响了Java EE技术的发展方向,今天的EJB中也提供了依赖注入和面向切面编程等理念,这些都是受Spring的启发和影响。今天的Spring框架已经涉及到移动开发、社交API集成、NoSQL、云计算、大数据等很多领域,为简化Java开发做出了极大的贡献。

    Spring在降低企业级开发复杂性上做了以下工作:
    1.基于POJO的轻量级和最小侵入性编程;
    2.通过依赖注入和面向接口编程实现解耦合;
    3.基于切面和约定(惯例)实现声明式编程;
    4.通过切面和模板减少乏味的代码。

    POJO

    Spring不强迫你实现Spring的接口或继承Spring的类,应用中可以没有Spring的痕迹。Spring赋予POJO魔力的方式之一就是通过依赖注入来完成对象的装配。

    依赖注入(DI)

    通过DI,对象无需自行创建或管理它们的依赖关系,依赖关系将会被自动注入到需要它们的对象当中去。

    面向切面编程(AOP)

    DI能够让相互协作的软件组件保持松散耦合,而AOP允许你把遍布应用各个角落的功能分离出来形成可重用的组件。系统通常由许多不同的组件构成,每一个组件都负责一项特定的功能,但是除了核心功能外,这些组件通常还需要诸如日志、事务管理和安全这样的额外职责,这些服务通常被称为横切关注点,因为它们会跨越多个组件。如果这些关注点分散到多个组件中去,你的代码维护起来就会非常头疼,而且逻辑会变得相当混乱。
    AOP通过声明的方式将服务模块应用到需要这些服务的组件中,从而保证了POJO的简单性。

    风景线

    • 核心容器:最核心的部分,管理Bean的创建、配置和管理。
    BeanFactory
    AnnotationConfigApplicationContext
    AnnotationConfigWebApplicationContext
    ClassPathXmlApplicationContext
    FileSystemXmlApplicationContext
    XmlWebApplicationContext
    
    • AOP模块:通过AOP可以将遍布系统各个角落的横切关注功能(事务和安全)从它们所作用的对象中解耦合出来
    • 数据访问和集成:直接使用JDBC访问数据库会导致大量的样板代码,Spring封装的JDBC和DAO模块抽象了这些样板代码;另外Spring提供了对ORM的支持,可以集成Hibernate、MyBatis、JDO等ORM框架并为其提供事务管理支持。
    • Web模块:Spring提供了对表示层MVC框架的集成,自己也提供了非常强大的MVC框架;同时Spring对实现REST API也提供了很好的支持。
    • 测试模块:对单元测试以及mock都提供了很好的支持。
    • Spring Web Flow:对基于流程的会话式Web应用提供了支持。
    • Spring Web Service:契约优先的Web Service模型。
    • Spring Batch:开发批处理应用,如对数据进行大量操作。
    • Spring Data:让Spring中使用关系型数据库和NoSQL(文档数据库、图数据库)都变得很容易,为JPA开发提供了简化。
    • Spring Social:社交网络扩展模块(注意针对Facebook或Twitter)。
    • Spring Mobile:支持移动Web应用开发的模块。
    • Spring Boot:简化众多编程任务,消除大量样板代码,使用自动配置技术简化Spring。

    4.x新功能

    • 对WebSocket的支持
    • 在WebSocket基础上提供了基于SockJS的面向消息的编程模型,包含了对STOMP协议的支持
    • 支持Java 8的新特性
    • 支持完全采用Groovy开发Spring应用程序
    • 条件化创建Bean的功能
    • 对多项JEE规范的支持,包括JMS 2.0、JTA 1.2、JPA 2.1和Bean Validation 1.1

    IoC容器

    • Spring配置的可选方案:
      1.在XML中进行显式配置
      2.在Java中进行显式配置
      3.隐式的Bean发现和自动装配机制

    • 依赖注入方式:
      1.构造器注入
      2.setter注入
      3.接口注入

    说明:Spring中支持前两种注入方式。对于对象的必要属性建议用构造器注入;而对象的非必要属性推荐使用setter注入

    使用AOP

    • 什么是AOP

    • AOP的术语:
      1.Advice(通知/增强)
      2.JoinPoint(连接点)
      3.PointCut(切点)
      4.Aspect(切面)
      5.Introdution(引入)
      6.Weaving(织入)

    • Spring对AOP的支持
      1.基于代理
      2.纯POJO切面
      3.@AspectJ注解驱动的切面
      4.注入式AspectJ切面

    Spring注解

    @Scope("prototype")
    @EnableAspectJAutoProxy 切面需要用到代理
    @Primary 首选

    面向切面编程有很多种实现方案
    AspectJ - Xerox - 施乐
    @Aspect

    相关文章

      网友评论

          本文标题:Spring学习笔记 - 第002天

          本文链接:https://www.haomeiwen.com/subject/vdzjnttx.html