-->

【学习笔记】Spring基础

2020-08-15 04:59发布

目录
  • 1.Spring概述
    • 1.1.Spring简史
    • 1.2.Spring概述
    • 1.3.Spring模块
    • 1.4.Spring生态
    • 1.5.Maven简介
  • 2.Spring基础配置
    • 2.1.Spring 框架的四大原则
    • 2.2.依赖注入
    • 2.3.Java配置
    • 2.4.AOP

1.Spring概述

1.1.Spring简史

  • 第一阶段:xml配置:在Spring 1.x时代,Spring开发都是采用xml来配置Bean。
  • 第二阶段:注解配置:在Spring 2.x时代,JDK1.5提供了注解支持,Spring则加入了声明Bean的注解(如@Component、@Service)
  • 第三阶段:Java配置:从Spring 3.x开始,Spring提供了Java配置的能力。

1.2.Spring概述

  • Spring框架是一个轻量级的企业级开发的一站式解决方案。提供了IoC容器、AOP、数据访问、Web开发、消息、测试等技术支持。
  • Spring使用简单的POJO(Plain Ordinary Java Object,普通Java对象)进行开发,每一个被Spring管理的Java对象被称之为Bean,Spring提供了一个IoC容器来初始化对象,解决对象间依赖管理和对象的使用。

1.3.Spring模块

如下图所示,Spring被分成了六个模块:(此处引自 https://blog.csdn.net/zeng1qing2rong3/java/article/details/81516467)

  • Spring核心容器(Spring Core Container):核心容器是Spring框架的重要组成部分,也可以说是Spring框架的基础。他在整个框架中的作用是负责管理对象的创建,管理,配置等等的操作。其主要包含spring-core,spring-beans,spring-context,spring-expression,spring-context-support组件。
  • 面向切面编程(AOP):Spring框架还提供了面向切面编程的能力,利用面向切面编程,可以实现一些面向对象编程无法很好实现的操作。例如,将日志,事务与具体的业务逻辑解耦。其主要包含spring-aop,spring-aspects组件。
  • Instrumentation:该模块提供了为JVM添加代理的功能,该模块包含spring-instrument,spring-instrument-tomcat组件,使用较少,不必过分关注。
  • 数据访问与集成(Data Access/Integration):Spring框架为了简化数据访问的操作,包装了很多关于数据访问的操作,提供了相应的模板。同时还提供了使用ORM框架的能力,可以与很多流行的ORM框架进行整合,如hibernate,mybatis等等的著名框架。还实现了数据事务的能力,能够支持事务。包含spring-jdbc,spring-tx,spring-orm,spring-oxm,spring-jms,spring-messaging组件。
  • Web和远程调用:Spring框架支持Web开发,以及与其他应用远程交互调用的方案。包含spring-web,spring-webmvc,spring-websocket,spring-webmvc-portlet组件。
  • Spring测试:Spring框架提供了测试的模块,可以实现单元测试,集成测试等等的测试流程,整合了JUnit或者TestNG测试框架。包含spring-test组件。

1.4.Spring生态

Spring经过长足的发展,现在已经提供了大量的项目,可以根据需求来选用:

  • SpringBoot:使用默认配置实现快速开发。
  • Spring XD:用来简化大数据应用开发。
  • Spring Cloud:为分布式系统提供工具集。
  • Spring Data:对主流的关系型和NoSQL数据库提供支持。
  • Spring Integration:通过消息机制对企业继承模式(EIP)提供支持。
  • Spring Batch:简化及优化大量数据库的批处理操作。
  • Spring HATEOAS:基于HATEOAS原则简化REST服务开发。
  • Spring Social:通过认证和授权保护应用。
  • Spring AMQP:对基于AMQP的消息的支持。
  • Spring Mobile:提供对手机设备检测的功能,给不同设备返回不同的页面的支持。
  • Spring for Android:主要提供在Andriod上消费RESTful API的功能。
  • Spring Web Flow:基于Spring MVC提供基于向导流程式的Web应用开发。
  • Spring Web Services:提供了基于协议有限的SOAP/Web服务。
  • Spring LDAP:简化使用LDAP开发。
  • Spring Session:提供一个API及实现来管理用户会话信息。

1.5.Maven简介

  • Apache Maven是一个软件项目管理工具,基于项目对象模型(Project Object Model,POM)的概念,可以用来管理项目的依赖、编译、文档等信息。
  • 用Maven管理项目时,项目依赖的jar包会被集中放在用户目录下的.m2文件夹下。

2.Spring基础配置

2.1.Spring 框架的四大原则

  • 使用POJO进行轻量级和最小侵入式的开发。
  • 通过依赖注入和基于接口编程实现松耦合。
  • 通过AOP和默认习惯进行声明式编程。
  • 使用AOP和模板减少模式化代码。

2.2.依赖注入

  • 在Spring环境中,控制反转(Inversion of Control,IoC)和依赖注入(Dependency Injection,DI)是一个概念。控制反转是通过依赖注入实现的,依赖注入是容器负责创将对象和维护对象间的依赖关系。依赖注入的目的是解耦。
  • Spring IoC容器负责创建Bean,并通过容器将功能类Bean注入到你需要的Bean中,Spring提供了xml、注解、Java配置、groovy配置实现Bean的创建和注入。
  • 声明Bean的注解:
    + @Component,没有明确的角色。
    + @Service,在业务逻辑层(service层)使用。
    + @Repository,在数据访问层(dao层)使用。
    + @Controlller,在表现层使用。
  • 注入Bean的注解:
    + @Autowired,Spring提供的注解。
    + @Inject,JSR-330提供的注解。
    + @Resource:JSR-250提供的注解。

2.3.Java配置

  • Java配置可以完全替代xml配置,通过@Configuration(声明当前为配置类)和@Bean(声明当前方法返回一个Bean)实现。
  • 通常我们在全局配置使用Java配置,业务Bean采用注解配置。

2.4.AOP

  • AOP即面向切面编程,与OOP(面向对象编程)相对应。
  • AOP存在的目的也是解耦,AOP可以让一组类共享相同的行为,OOP只能通过继承类和实现接口来增强耦合,类继承为单继承,阻碍更多行为添加到一组类上。
  • Spring使用@Aspect声明切面,使用@After、@Before、@Around定义建言(advice),可以使用拦截规则(切面)作为参数。
  • Spring提供基于注解拦截和基于方法拦截两种方式,在事务处理(@Transactional)和数据缓存(@Cacheable等)都使用了基于注解的拦截。
标签: