首页 > 其他分享 >Spring是什么?我们为什么要学习它?

Spring是什么?我们为什么要学习它?

时间:2024-10-10 15:50:27浏览次数:3  
标签:02 为什么 17 Spring INFO 学习 2020 spring 985848

环境

  1. jdk1.8
  2. idea
  3. maven-3.6.1
  4. spring-5.2.3.RELEASE

整个spring系列使用官方最新版本5.2.3.RELEASE,会有大量案例,都是通过maven来管理的,所以maven是必备技能,对这块不熟悉的可以去看一下:Maven系列

为什么需要学习spring?

  1. 最大程度的简化了开发

    spring是一个非常优秀的java框架,其目标是为了简化java企业级开发,spring出来已经十几年了,这期间也一直围绕着这个目标在进行,像后面需要学习的springmvc、springboot、springcloud,这些技术也都是围绕着简化开发的目标在努力,到目前为止已经做的足够好了,可以说spring除了不能帮助我们实现业务逻辑代码之外,其他的事情spring都尽量去帮我们简化了,使用spring可以帮助我们节约大量开发时间。

    不使用spring的情况下,开发一个项目可能需要2个月,用了spring可能1个月都不需要,你说这样的技术你想学么?

  2. 大量公司使用

    目前99%的公司使用了spring,可以去各大招聘网站看一下,spring算是必备技能,所以一定要掌握。

  3. 顶级的源码设计

    spring框架源码设计非常优秀,在java开源项目中可以说是顶级的,个人到目前为止还没有发现比spring代码更优秀的开源项目,所以想提升代码能力的,强烈建议多看看spring的源码;关于提升代码能力的,还可以去看一下jdk的源码,也是非常棒的,里面有很多大师的杰作。

什么是spring?

spring是一个简化java企业级开发的一个框架,内部包含了很多技术,比如:控制反转&依赖注入、面向切面编程、spring事务管理、通过spring集成其他框架、springmvc、springboot、springcloud等等,这些都是围绕简化开发展开的技术,后面会对每个知识点详细介绍。

感受一下spring的强大

先让大家感受一下spring的强大,来激发大家学习的兴趣。

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

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

原生的web项目开发过程都是上面这样,和业务相关的其实只有第2步,而其他几个步骤是每个web项目都需要的,像比较大的项目,会有很多web模块,每个模块都需要重复这些1/3/4操作步骤,还是相当繁琐的,也会耗费大量时间。

如果使用springboot来实现,过程会简化很多,来感受一下:

打开idea,点击File->New->Project,如下:

目前为止我们还未写一行代码,下面我们创建一个类HelloWorldController,代码如下:

package com.javacode2018;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RequestMapping("/helloWorld")
public class HelloWorldController {
    @RequestMapping("/index")
    public String index() {
        return "hello world!";
    }
}

大家先不用关注项目中代码什么意思,主要关注一下效果。

下面我们来启动项目。

注意项目中有一个自动生成的类:com.javacode2018.SpringDemo1Application,这个类包含了main方法,说明是可以运行的,我们运行一下,控制台输出:

 .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.4.RELEASE)
2020-02-03 17:42:52.965  INFO 985848 --- [           main] com.javacode2018.SpringDemo1Application  : Starting SpringDemo1Application on DESKTOP-3OB6NA3 with PID 985848 (E:\spring\spring-demo1\target\classes started by Think in E:\spring\spring-demo1)
2020-02-03 17:42:52.968  INFO 985848 --- [           main] com.javacode2018.SpringDemo1Application  : No active profile set, falling back to default profiles: default
2020-02-03 17:42:55.440  INFO 985848 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2020-02-03 17:42:55.450  INFO 985848 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-02-03 17:42:55.451  INFO 985848 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.30]
2020-02-03 17:42:55.554  INFO 985848 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-02-03 17:42:55.554  INFO 985848 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 2546 ms
2020-02-03 17:42:55.691  INFO 985848 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-02-03 17:42:55.800  INFO 985848 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2020-02-03 17:42:55.802  INFO 985848 --- [           main] com.javacode2018.SpringDemo1Application  : Started SpringDemo1Application in 3.219 seconds (JVM running for 4.096)
2020-02-03 17:43:17.691  INFO 985848 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-02-03 17:43:17.691  INFO 985848 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2020-02-03 17:43:17.695  INFO 985848 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 4 ms

打开浏览器,访问下面地址:

http://localhost:8080/helloWorld/index

效果如下图:

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

总结

这篇文章主要是让大家了解一下spring是什么,总的来说spring是一个非常优秀的java框架,这个框架的目标是为了简化企业级开发中需要用到的各种技术而存在的

标签:02,为什么,17,Spring,INFO,学习,2020,spring,985848
From: https://blog.csdn.net/m0_67560393/article/details/142812793

相关文章

  • Spring事务管理与AOP代理的原理,默认的单例对象和代理对象销毁的时机
    Spring的事务管理是使用AOP(面向切面编程)代理的原理来实现的。Spring事务管理与AOP代理原理AOP代理的作用:在Spring中,AOP代理用于在目标对象的方法执行前后注入自定义的逻辑,这些逻辑通常与业务逻辑无关,但需要在业务逻辑执行时同步执行,如事务管理、日志记录、性能检测等。通过......
  • Java中常见的异常分类,结合Spring的事务巩固复习
    Java异常的继承关系是通过类继承的方式构建的一个层次结构。以下是对Java异常继承关系的详细图解说明:异常类的顶层Throwable:所有异常和错误的超类。Throwable的子类Error:通常是指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败等,这种错误无法恢复或不可能捕获,将......
  • prometheus学习笔记之进程监控process_exporter
    项目地址:https://github.com/ncabatoff/process-exporter一、安装process-exporterhttps://github.com/ncabatoff/process-exporter/releases/download/v0.8.3/process-exporter-0.8.3.linux-amd64.tar.gztarxfprocess-exporter-0.8.3.linux-amd64.tar.gzmvprocess-expo......
  • Spring Security(常见过滤器介绍)
    SpringSecurity是一个基于Spring框架的安全性解决方案,为Java应用程序提供了一套全面的安全解决方案。一、概述SpringSecurity是Spring采用AOP(面向切面编程)思想,基于servlet过滤器实现的安全框架。它致力于保护基于Spring的应用程序,并成为了这类应用的事实上的安全标准。S......
  • 知识四:无模型强化学习
    知识四:强化学习-无模型强化学习4.1介绍Model-free方法蒙特卡罗学习(A方法)时序差分学习(B方法)TD(λ\lambdaλ)(A+B混合)、为了评估......
  • Spring事务的1道面试题
    每次聊起Spring事务,好像很熟悉,又好像很陌生。本篇通过一道面试题和一些实践,来拆解几个Spring事务的常见坑点。原理Spring事务的原理是:通过AOP切面的方式实现的,也就是通过代理模式去实现事务增强。具体过程是:对包含@Transactional注解的方法进行拦截,然后重写,重新在方法里加入异......
  • 机器学习之神经网络Neural Network
    第一部分:基本含义神经网络(NeuralNetwork)是一种模仿人脑神经元连接方式的机器学习模型,用于处理复杂的非线性问题。通过大量的参数和层级结构,神经网络可以学习数据中的特征,应用于分类、回归等任务。机器学习和人类实现人生巅峰的例子对比:如果把人比作神经网络,一次次摔倒就是......
  • 机器学习之梯度消失和梯度爆炸
    第一部分:梯度消失问题描述我们以多层单神经元为例,同时,为了简化问题描述,我们省略偏置b:假设我们现在想要更新参数w1:那么通过链式法则求导就是:假设我们使用的是sigmoid函数:那么sigmoid的求导函数图像为:倒数的范围为0~1/4,而不是0~1之间,如果是0~1之间,那么上面的这四个......
  • Springboot二手车估值与销售网络平台l0471(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表客户,汽车分类,车辆信息,车辆估价,商家开题报告内容一、研究背景随着汽车消费市场的不断扩大和二手车交易的增多,设计和实现一个二手车估值与销售网络平台具有重......
  • Springboot动漫图片分享网站k3r27(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,画手,图片分类,图片分享,求稿任务,接稿请求开题报告内容一、研究背景随着互联网技术的飞速发展和动漫文化的普及,越来越多的人开始分享和欣赏动漫图片。然......