《深入浅出Spring》为什么要学习Spring

Why 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.

官网的解释:
Spring使Java编程更快、更容易、更安全 。Spring对速度、简单性和生产速率的关注使其成为世界上最流行的Java框架。

Spring的优点:

轻量级:相较于其他容器,Spring采用的IoC容器非常的轻量级,基础版本的Spring框架大约只有2MB。Spring可以让开发者们仅仅使用POJO(Plain Old Java Object,相对于EJB)就能够开发出企业级的应用。这样做的好处是,你不需要使用臃肿庞大的 EJB容器(应用服务器),你只需要轻量的servlet容器(如Tomcat)。尤其在一些开发当中,很稀缺内存和CPU资源时,采用Spring比EJB无论是开发还是部署应用都更节约资源。

控制反转(IOC):Spring使用控制反转技术实现了松耦合。依赖被注入到对象,而不是创建或寻找依赖对象。

面向切面编程(AOP): Spring支持面向切面编程,同时把应用的业务逻辑与系统的服务分离开来。

MVC框架:Spring MVC是一个非常好的MVC框架,可以替换其他web框架诸如Struts。

集成性:Spring非常容易和其他的流行框架一起集成开发,这些框架包括:ORM框架,logging框架,JEE, Quartz,以及Struts等表现层框架。

事务管理:Spring强大的事务管理功能,能够处理本地事务(一个数据库)或是全局事务(多个数据,采用JTA)。

模块分离:Spring框架是由模块构成的。虽然已经有太多的包和类了,但它们都按照模块分好类了,你只需要考虑你会用到的模块,而不用理其他的模块。

异常处理:由于Java的JDBC,Hibernate等API中有很多方法抛出的是checked exception,而很多开发者并不能很好的处理异常。Spring提供了统一的API将这些checked exception的异常转换成Spring的unchecked exception。

单元测试:Spring写出来的代码非常容易做单元测试,可以采用依赖注射(Dependency Injection)将测试的数据注射到程序中。
安全性: Spring 提供了Spring Security 主要用于快速构建安全的应用程序和服务,在Spring Boot和Spring Security OAuth2的基础上,可以快速实现常见安全模型,如单点登录,令牌中继和令牌交换。你可以了解一下oauth2授权机制和jwt认证方式。oauth2是一种授权机制,规定了完备的授权、认证流程。JWT全称是JSON Web Token,是一种把认证信息包含在token中的认证实现,oauth2授权机制中就可以应用jwt来作为认证的具体实现方法
微服务: SpringCloud组件

对比其他框架

举例:
我们需要为移动端提供api接口,接口数据以json格式输出,使用java技术,实现过程大家应该比较熟悉,如下:

  • 使用IDE创建一个web项目
  • 创建servlet,servlet中写业务代码,组装需要数据,将数据以json格式输出
  • 在web.xml中配置servlet信息
  • 将项目部署到tomcat容器中

原生的web项目开发过程都是上面这样,和业务相关的其实只有第2步,而其他几个步骤是每个web项目都需要的,像比较大的项目,会有很多web模块,每个模块都需要重复这些1/3/4操作步骤,还是相当繁琐的,也会耗费大量时间
用Spring的Springboot 来创建web项目过程会简便很多:
打开idea,点击File->New->Project,如下:

在这里插入图片描述点击Spring Initializr->Next,如下图:
在这里插入图片描述
点击Spring Web->Finish,如下图:
在这里插入图片描述
一个Spring项目 3步就创建成功了。。。

  • 下面写Controller 测试项目: 永远的Helloworld
package com.yuan11.springdemo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @title: HelloWorldController
 * @Author yuan11
 * @Date: 2022/5/31 0:11
 * @Version 1.0
 */
@RestController
@RequestMapping("/")
public class HelloWorldController {

    @GetMapping("helloWorld")
    public String sayHello(){
        return "hello world Spring";
    }
}
  • 启动SpringDemoApplication

在这里插入图片描述

  • 项目运行信息


Springboot2.7.0
tomcat 9.0.63
端口号8080

  • 页面访问 http://localhost:8080/helloWorld

在这里插入图片描述

  • IDEA 测试接口 :

在这里插入图片描述
测试结果如下:
在这里插入图片描述

此时我们需要的功能已经实现了,然而到目前为止,只有HelloWorldController代码是我们写的,而我们没有去创建servlet、将返回的结果以json格式输出、配置web.xml,没有将项目发布到tomcat,没有去启动tomcat,而只启动了一个main方法,是不是非常神奇。这些操作不是说不需要,而是springboot内部已经帮我们实现了,对于开发者来说这些都被隐藏了,springboot让我们更关注业务代码的实现,从而最大限度的帮我们提升开发效率,简化项目的开发过程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值