博客
关于我
2019年Spring核心知识点整理,看看你掌握了多少?
阅读量:389 次
发布时间:2019-03-05

本文共 3644 字,大约阅读时间需要 12 分钟。

Spring框架核心知识点整理

如今做Java尤其是web开发,几乎是避免不了和Spring打交道的。Spring作为一个大而全面的框架,新鲜名词不断产生,学起来可能会给人一种凌乱的感觉。在这里,我将总结一下Spring的核心知识点,理顺一下头绪。

Spring概述

Spring是一个开源框架,旨在解决企业应用开发中的复杂性问题。它通过抽象化和封装,简化了企业级应用开发的复杂性,让开发者专注于业务逻辑的实现,而不必手动处理诸如对象创建、依赖注入、事务管理等基础问题。Spring框架是一个分层架构,由七个定义良好的模块组成,每个模块可以单独存在或与其他模块联合使用。

Spring的核心容器通过BeanFactory实现依赖注入(DI),将应用程序的配置和依赖关系与代码分离。其他模块如上下文、AOP、DAO、ORM、Web、MVC等则分别承担不同的功能,共同构建一个全面的开发平台。

Spring核心特点:IOC和AOP

IOC(控制反转)和AOP(面向切面编程)是Spring框架的两大核心概念,是开发者在使用Spring时最需要理解的基础知识。

IOC(Inverse of Control): IOC的核心思想是“不创建对象,而是描述对象的创建方式”。通过容器(Spring的IOC容器),应用程序的配置和依赖关系由第三方组件管理。开发者无需直接创建对象,也无需管理对象的生命周期,容器会自动注入所需的依赖对象。

AOP(Aspect Orient Programming): AOP的目标是将系统的横切关注点(如日志、事务管理、缓存等)从业务逻辑中剥离出来。通过动态代理的方式,Spring可以在不修改现有代码的情况下,添加额外的功能。这种方式使得系统的内聚性更好,耦合性更低。

在传统的开发模式中,对象之间的依赖关系是通过直接创建对象或使用工厂模式来实现的。然而,这种方式会导致代码的耦合性高、维护成本大。Spring通过IOC和AOP,显著降低了对象之间的耦合性,提高了系统的可维护性和扩展性。

Spring优点总结

Spring框架具有以下优点:

  • 低侵入式设计,代码污染极低:Spring通过注解和POJO实现非侵入式开发,代码无需继承框架类或实现接口。
  • 使用模板消除样板式代码:如JdbcTemplate、RestTemplate等模板库,简化了常见任务的实现。
  • 独立于各种应用服务器:Spring框架支持多种应用服务器,具备“一次写,一处运行”的特性。
  • IOC容器降低依赖管理复杂性:通过自动注入,实现了对对象依赖关系的管理,支持依赖注入的方式有多种(如构造器注入、 setter注入、自动注入等)。
  • AOP支持通用切面功能:如事务管理、日志记录、缓存等功能可以通过声明式方式实现。
  • 与第三方框架无缝对接:如Spring Data与Hibernate、Spring Security与Shibbolet等框架的集成支持。
  • 高度开放性:开发者可以选择使用Spring的部分组件或全部功能,框架本身支持与其他技术和工具的集成。
  • Spring MVC

    Spring MVC是Spring框架中用于构建Web应用程序的核心组件,基于MVC模式实现。MVC模式通过分离模型(Model)、视图(View)、控制器(Controller)三层,提高了应用程序的可维护性和扩展性。

    在Spring MVC中,一个典型的Web请求流程可以分为以下几个步骤:

  • 前端控制器(DispatcherServlet):接收HTTP请求,决定如何处理请求。
  • 路由匹配:根据请求URL和方法,找到对应的控制器方法。
  • 执行控制器方法:调用处理逻辑,生成响应数据。
  • 视图解析:根据返回数据类型决定使用哪种视图解析器(如JSP、Thymeleaf等)。
  • 返回响应:将处理结果返回给客户端。
  • Spring MVC支持多种视图解析器,并通过注解简化了控制器的开发。开发者只需编写POJO作为控制器,而不需要手动管理HTTP请求和响应。

    Spring Web Flow

    Spring Web Flow是Spring MVC的一个扩展,用于构建会话式Web应用程序。它通过定义流程、状态和转移,帮助开发者创建用户向导和任务流程。

    Spring Web Flow的主要元素包括:

    • 状态(State):流程逻辑发生的位置,分为行为状态、决策状态、结束状态、子流程状态和视图状态。
    • 转移(Transition):连接状态的方式,决定流程从一个状态转移到另一个状态。
    • 流程数据(Flow Data):流程在不同状态间传递的数据。

    通过配置流程定义文件(如XML或JSR-268格式),开发者可以创建复杂的流程逻辑。然而,随着项目复杂度增加,传统的XML配置可能会带来维护上的问题。

    Spring Security

    Spring Security是Spring框架中用于保护Web应用程序安全的模块。它通过AOP和Filter实现安全功能,如用户认证、权限控制、URL访问限制等。

    Spring Security的主要特点:

    • 多种用户存储支持:内存用户存储、数据库用户存储、LDAP用户存储等。
    • 基于角色的访问控制(RBAC):通过定义用户角色和权限,控制访问权限。
    • 视图保护:通过JSP标签库或Thymeleaf模板实现动态视图保护。
    • 方法调用保护:通过AOP实现方法级别的安全控制,确保只有具备权限的用户才能访问受保护的方法。

    Spring Security支持多种认证方式,如基于token的认证、基于OAuth的认证、基于OpenID的认证等,能够满足不同应用场景的安全需求。

    Spring Data

    Spring Data旨在简化基于Spring框架的数据访问开发,支持多种持久化存储如关系型数据库、NoSQL数据库、云数据服务等。

    Spring Data的主要功能:

    • 统一的数据访问接口:通过Repository接口定义数据访问方法,Spring Data会在运行时生成具体的实现类。
    • 模板支持:提供丰富的模板类似于JdbcTemplate,简化数据库操作。
    • 持久化抽象层:无需关心具体持久化存储,通过抽象化的API操作数据。

    Spring Data还提供了多个子项目,支持不同的持久化存储,如MongoDB、Redis、Cassandra、Solr等。每个子项目都遵循统一的数据访问接口,简化了持久化层的开发。

    Spring Boot

    Spring Boot是Spring框架的轻量级版本,专注于快速构建和部署Spring应用程序。它通过自动配置和Starter项目,简化了Spring应用的设置和配置。

    Spring Boot的主要特点:

    • 自动配置:利用Spring的条件化配置,自动化配置Spring应用的bean,减少手动配置。
    • Starter项目:将常用依赖和配置整合到一个JAR文件中,开发者只需添加依赖即可使用。
    • 命令行接口(CLI):通过Groovy脚本实现的命令行工具,支持快速构建和部署。
    • Actuator监控:提供应用监控和健康检查功能。

    Spring Boot简化了Spring的配置,使得开发者可以专注于业务逻辑的实现,而无需手动配置服务器和依赖。

    Spring Cloud

    Spring Cloud是Spring框架的扩展,专注于微服务架构的构建和管理。它提供了分布式系统的基础设施,如配置管理、服务发现、负载均衡、断路器等。

    Spring Cloud的主要子项目:

    • Spring Cloud Config:分布式的配置管理,支持动态更新。
    • Spring Cloud Eureka:服务发现和注册中心。
    • Spring Cloud Zuul:基于Netflix Zuul的路由和权限控制。
    • Spring Cloud Feign:声明式的HTTP客户端,简化REST服务调用。
    • Spring Cloud Ribbon:基于Netflix Ribbon的负载均衡。
    • Spring Cloud Hystrix:断路器,处理分布式系统中的不可用性。
    • Spring Cloud Bus:分布式消息总线。

    通过Spring Cloud,开发者可以快速构建分布式系统,实现服务之间的高效通信和管理。

    总结

    Spring框架是一个强大而灵活的开发平台,涵盖了从基础服务到上层应用的全套解决方案。无论是Web开发、数据访问、安全保护,还是微服务架构,都能通过Spring框架找到合适的解决方案。Spring Boot和Spring Cloud的出现,进一步降低了开发门槛,使得开发者能够更专注于业务逻辑的实现。

    如果你对Spring还有更多疑问,或者想深入学习Spring的具体功能,欢迎关注我的公种浩【程序员追风】,我会持续更新相关技术文章和资源分享。让我们一起探索Spring世界的无限可能吧!

    转载地址:http://gmvg.baihongyu.com/

    你可能感兴趣的文章
    openCV目标识别 目标跟踪 YOLO5深度学习 Python 计算机视觉 计算机毕业设计 源码下载
    查看>>
    opencv笔记(1):图像缩放
    查看>>
    opencv笔记(二十四)——得到轮廓之后找到凸包convex hull
    查看>>
    OpenCV计算点到直线的距离 数学法
    查看>>
    Opencv识别图中人脸
    查看>>
    OpenCV读写avi、mpeg文件
    查看>>
    opencv里用calcCovarMatrix计算协方差矩阵
    查看>>
    OpenCV错误:在setSize中断言失败(s&>;=0)-尝试将图像放置在网络摄像头提要上时
    查看>>
    opencv面向对象设计初探
    查看>>
    OpenCV(1)读写图像
    查看>>
    OpenCV:不规则形状区域中每种颜色的像素数?
    查看>>