Spring系列第1篇:请问各位大佬为什么要学spring?

Spring系列目标:从入门掌握一个高级开发所须要的技能。java

环境

  1. jdk1.8web

  2. idea算法

  3. maven-3.6.1spring

  4. spring-5.2.3.RELEASE数据库

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

为何须要学习spring?

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

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

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

  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,以下:

点击Spring Initializr->Next,以下图:

输入项目坐标信息,以下图:

选择Web->Spring Web->Spring Boot(2.24)->Next,以下图:

点击Finish,完成项目的建立,以下图:

项目结构以下图:

目前为止咱们还未写一行代码,下面咱们建立一个类HelloWorldController,代码以下:

package com.javacode2018;

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

/**
 * 公众号:路人甲Java,工做10年的前阿里P7分享Java、算法、数据库方面的技术干货!坚信用技术改变命运,让家人过上更体面的生活!
 */
@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框架,这个框架的目标是为了简化企业级开发中须要用到的各类技术而存在的,后面的文章咱们将一一介绍spring是如何作到简化项目开发的,如何让咱们的项目更容易维护和扩展的,敬请期待!

更多好文章

  1. Java高并发系列(共34篇)

  2. MySql高手系列(共27篇)

  3. Maven高手系列(共10篇)

  4. Mybatis系列(共12篇)

  5. 聊聊db和缓存一致性常见的实现方式

  6. 接口幂等性这么重要,它是什么?怎么实现?

  7. 泛型,有点难度,会让不少人懵逼,那是由于你没有看这篇文章!

感谢你们的阅读,也欢迎您把这篇文章分享给更多的朋友一块儿阅读!谢谢!

路人甲java

▲长按图片识别二维码关注

路人甲Java:工做10年的前阿里P7分享Java、算法、数据库方面的技术干货!坚信用技术改变命运,让家人过上更体面的生活!