玩一玩Spring框架

一、Web开发技术

  • Web开发技术思维导图
    在这里插入图片描述
  • 从学习角度来说,理解技术问题要越透彻越好,被屏蔽或被封装起来的信息要越少越好。从工程实现角度来说,要尽量高效地使用现成框架和现成工具——这是“学习”和“工程实现”的差别,但这两件事并不矛盾,我们学习得越透彻,在工程实现时,对框架和工具的使用就越高效。

二、Spring框架

(一)Spring官网

(二)Spring框架优点

1.Spring makes Java productive.
2.Spring makes Java reactive.
3.Spring makes Java cloud-ready.
4.Spring makes Java simple.
5.Spring makes Java modern.

(三)为什么要选择Spring?

Spring makes programming Java quicker, easier, and safer for everybody. Spring’s focus on speed, simplicity, and productivity has made it the world’s most popular Java framework.

“We use a lot of the tools that come with the Spring framework and reap the benefits of having a lot of the out of the box solutions, and not having to worry about writing a ton of additional code—so that really saves us some time and energy.” —— SEAN GRAHAM, APPLICATION TRANSFORMATION LEAD, DICK’S SPORTING GOODS
在这里插入图片描述

(四) Spring框架因何而来

  • Spring Framework的发明与Java规范的变迁有着千丝万缕的联系,在Java规范的早期版本中,**Sun公司针对不同的开发场景创建了不同的规范,**以此帮助Java开发者更高效、更专注地开发业务逻辑,这些规范包括J2SE、J2ME及专门为企业级应用打造的J2EE,而EJB规范又是当时J2EE规范中最核心的部分。
  • EJB 1.0发布于1999年,它最初由IBM提出,之后由Sun公司(Java语言创建公司,现已由Oracle收购)将其吸收进Java官方体系,最后由JCP(Java Community Process,是一个开放的国际组织,主要由Java开发者及被授权者组成)正式将其规范化。由于当时Java在业界风头正劲,各大公司都广泛地使用EJB规范来进行应用开发,在这种环境下,EJB规范几乎成了Java企业级应用开发的代名词。
  • 但是任何技术都不是完美的,EJB自身存在各种问题,要求革新EJB技术的呼声一浪高过一浪,无论是当时的学术界还是企业界都没有符合要求的技术出现。一位名为Rod Johnson的开发者,结合自己扎实的理论知识和丰富的实践经验写出了对当时及后来的Java开发者影响深远的两本著作Expert One-on-One J2EE Design andDevelopment和J2EE without EJB,他通过这两本书阐述了一种与当时主流EJB截然不同的开发方式,这两本书也可以视为Spring Framework的起源。
  • 从设计思想来看,Rod Johnson认为当时的EJB框架太过繁重,程序员需要花费大量的时间和精力来实现EJB规范所要求的各种类,并且还要管理他们的生命周期,这完全违背了EJB提出时的初衷——“让大部分程序员把精力都用在业务功能本身上”。为了解决这种本末倒置的问题,RodJohnson提出了轻量级框架的概念,并将这种思想完全贯彻于Spring Framework。这也是此框架被称为Spring的原因:传统的J2EE开发让开发者走进了冬天(Winter),而春天(Spring)将会是一个全新的开始。
  • Spring公开可查的最初版本成型于RodJohnson的Expert One-on-One J2EE Designand Development一书,其1.0版本于2004年正式开源(其开源许可证为Apache 2.0 License),正式开源版本的Spring Framework以其独特的开发方式和全新的设计理念震撼了整个Java开发者生态圈。

(五)Spring框架核心概念

1、IoC(Inversion of Control)和容器

  • 理解IoC的概念对掌握Spring Framework而言是十分重要的,因为所有Spring对象的组装都基于此。在IoC概念中,控制是指依赖者和被依赖者的关系控制。在传统的Java应用开发中,如果A类依赖于B类,那么B类对象的生命周期都由A类对象控制,从而形成A类与B类的强耦合关系。 然而,在面向对象的编程体系中,强耦合是应当极力避免的,如果可以将B对象生命周期的控制从A对象中剥离,那么强依赖关系也不再成立,整体系统也更加符合面向对象的设计原则。
  • IoC的核心思想是,被依赖者不再由依赖者直接创建,而是交由专门的组装者来控制,在组装者创建出被依赖的对象之后,将其注入依赖者。通过这样的设计,可以达到松散耦合和接口与实现分离的目的。 如果读者熟悉经典的GoF设计模式,那么在传统的实现中,这种需求都将通过工厂模式来实现。熟悉工厂模式对理解SpringFramework和阅读其源代码都有很好的帮助。 因此,建议大家在学习Spring Framework之前,花一点时间了解设计模式中的工厂模式。
  • 从实现的角度来理解IoC,它与依赖注入(DI,Dependency Injection)密不可分。假设A类依赖于B类(B类并不是一个实现类,只是一个实现声明的接口,真正的实现类并不会直接暴露给A类),而且实现类的生命周期也由容器(组装者)控制,B类的实现对象将由容器注入A类对象。则根据面向对象的设计理论,此时的A类依赖于接口B,而非依赖于接口B的实现类,从而使A类获得了不再依赖于实现细节的能力,实现了松耦合的设计目标,A类不再控制B类的生命周期,而且根据业务需求,还可以切换接口B的实现类,以此满足不同功能。
  • Spring Framework的作用是将普通的Java类经过一系列配置,再利用IoC容器将不同对象组装在一起,最终形成一个可以运行的系统。
    在这里插入图片描述

(六)Spring Framework架构图

  • Spring Framework的架构图
    在这里插入图片描述
  • 基于IoC(DI)和AOP两大强力支柱,Spring Framework提供给Java开发者一种全新的(就当时而言)开发体验。与当时的其他框架都不同,Spring Framework并不只是一种通用框架,更多时候Spring Framework在充当一种类似于胶水的角色,将不同的组件整合在一起最终形成完备的系统。 所以,它不仅为开发者提供各种便利性,而且具备将Java生态中的主流开源框架(如Hibernate、iBatis等)和Java语言规范(如JDBC、JMX、JMS等)融合的能力。此外,Spring Framework提倡无侵入式编程,既可以让开发者享受使用框架的好处,又省却了与框架代码过度耦合的烦恼。 典型的Spring应用有两部分组成:一部分是与系统功能强相关的业务逻辑,另一部分是与业务无关的框架代码,但此类框架代码大部分已经被Spring简化,开发者只需利用IoC和AOP技术,通过简单的配置(前期以XML为主,在JDK 1.5之后以注释(Annotation)为主)将二者融合在一起形成功能完整的Java应用。

(七)Spring框架主要组件及其功能

在这里插入图片描述

(八)Spring框架的价值与意义

  • 在Spring Framework问世之后,因其风格优雅、简洁易用,以及对RESTful等功能的良好支持,迅速地成为Java开发的事实标准,而EJB却被开发者遗忘了。各大Web容器厂商也在重新评估,在Web容器中是否还需要继续支持EJB。总而言之,Spring让广大Java应用开发者从复杂的框架代码中解脱出来,更加专注于应用的业务逻辑,这一点广阔而深远地影响了整个Java生态圈。
  • 虽然Spring公司(由Rod Johnson创建最初名为Interface 21,后改名为SpringSource)经过一系列资本运作已于2009年被VMware收购,而Rod Johnson本人也于2012年正式离开了VMware,但是Rod Johnson对整个Java生态圈的卓越贡献将被永远铭记。

三、Spring容器演示

  • Spring容器其实就是一个Bean工厂,在工厂里通过配置文件或配置类创建各种各样的Bean,然后在Spring应用程序就可以按照名称或类型获取工厂里已经配置好的Bean。下面我们就通过一个具体的案例来了解Spring容器是如何工作的。创建Spring应用程序 - 骑士完成任务。

(一)创建Maven项目

  • 创建Maven项目 - SpringDemo,设置项目位置以及组ID

(二)添加Spring依赖

(三)创建杀龙任务类

(四)创建勇敢骑士类

(五)采用传统方式让勇敢骑士完成杀龙任务

(六)采用Spring框架让勇敢骑士完成杀龙任务

1、创建日志属性文件

2、创建Spring配置文件

3、在Spring配置文件里创建Bean

(1)创建杀龙任务Bean
(2)创建勇敢骑士Bean
4、创建新勇敢骑士测试类

5、创建两个勇敢骑士Bean

6、修改新勇敢骑士测试类

(七)采用构造方法注入方式注入属性值

1、创建救美任务类

2、创建救美骑士类

3、配置救美骑士Bean

4、创建旧救美骑士测试类

5、创建新救美骑士测试类

ABC in Mondern Society

1. A: AI

2. B: Big Data

3. C: Cloud Computing

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值