Spring Boot 2.1.6 版



      与时俱进是每一个程序员都应该有的意识,当一个Java程序员在当代遍布的时候,你就该意识到能多学点什么。可观的是后端的框架是稳定的,它们能够维持更久的时间在应用中,而不用担心技术的更新换代。但是类似SSH,SSM这些框架已经太久了,人们迫不及待地想使用更为优雅而又简便的框架来代替,所以SpringBoot运用而生。

      Spring Boot是Spring家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程。采用Spring Boot可以非常容易和快速的构建基于Spring框架的应用程序,它让编码变简单,配置变简单,部署变简单,监控变简单。正因为Spring Boot能够化繁为简,让开发变得极其快捷,所以在业界备受关注。目前Spring Boot在国内的关注趋势也日渐超过Spring。

学习条件

      SpringBoot框架是应用在Spring Framework框架的基础上,对Spring Framework框架的进行优化和升级成为了新的框架。既SpringBoot是构建在Spring Framework框架的基础之上,所以想要学好SpringBoot-那么你肯定要掌握Spring Framework。

介绍

Spring Boot概述

      Spring框架功能很强大,但是就算是一个很简单的项目,我们也要配置很多东西。因此就有了Spring Boot框架,它的作用很简单,就是帮我们自动配置。Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置。如果默认配置不能满足需求,我们还可以替换掉自动配置类,使用我们自己的配置。Spring Boot不是对Spring的增强,而是一个快速使用Spring进行开发的框架。Spring Boot 旨在帮助开发者快速搭建 Spring 框架。


      使用Spring Boot可以很容易创建一个独立运行(运行jar,内嵌servlet容器)、准生产级的基于Spring框架的项目,使用Spring Boot我们可以不用甚至只需要很少的Spring配置。另外,Spring Boot还集成了嵌入式的Web服务器,系统监控等很多有用的功能,让我们快速构建企业级应用程序。


      微服务是未来发展的趋势,Spring Boot 是项目微服务化发展的基石。


      以上观点也是我们为什么要学习SpringBoot的关键点。

Spring Boot核心功能

独立运行的Spring项目

      Spring Boot可以以jar包形式直接运行,如 java -jar xxx.jar

      优点是:节省服务器资源

内嵌Tomcat和Jetty容器

      Spring Boot可以选择内嵌Tomcat,Jetty,这样我们无须以war包形式部署项目。

提供一个starter POMs来简化Maven配置

      例如引入spring-boot-starter-web时会自动引入


      spring-boot-starter-parent是一个特殊Start,它用来提供相关的Maven依赖项,使用它之后,常用的包依赖可以省去version标签。

自动配置Spring

      Spring Boot会根据在类路径中的jar包,类,为jar包里的类自动配置Bean,这样会极大减少我们要使用的配置。当然SpringBoot只考虑了大部分开发场景,并不是所有的场景,如果在实际的开发中我们需要自动配置Bean,而Spring Boot不能满足,则可以自定义自动配置。

准生产的应用监控

      Spring Boot提供基于http,ssh,telnet对运行时的项目进行监控。

无代码生成和xml配置

      Spring Boot大量使用spring4.x提供的注解新特性来实现无代码生成和xml配置。 spring4.x提倡使用Java配置和注解配置组合,而Spring Boot不需要任何xml配置即可实现spring的所有配置。

      综上我们可以得出:Spring Boot让开发变得简单,让部署变得简单,让监控变得简单,让配置变得更简单。

快速入门

      Spring Boot 2.1.6.RELEASE需要Java 8,并且与Java 11兼容(包括在内)。

      还需要Spring Framework 5.1.8.RELEASE或更高版本。

第一个 Spring Boot 项目

创建项目


编写 pom.xml

      根据官网 Spring Boot 文档提示从 spring-boot-starter-parent 项目继承并向一个或多个 Starters 声明依赖项。Spring starter 是 Spring Boot 的核心,可以理解为一个可拔插式的插件,例如,你想使用Reids插件,那么可以使用 spring-boot-starter-redis;如果想使用MongoDB,可以使用 spring-boot-starter-data-mongodb。

  1. <!-- 引入springboot父类依赖 -->
  2. <parent>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-parent</artifactId>
  5. <version>2.1.6.RELEASE</version>
  6. </parent>
  7. <dependencies>
  8. <!-- springboot-web 组件 -->
  9. <dependency>
  10. <groupId>org.springframework.boot</groupId>
  11. <artifactId>spring-boot-starter-web</artifactId>
  12. </dependency>
  13. </dependencies>


HelloWorld

      HelloWorldController.java

  1. package com.springboot.controller;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. import org.springframework.web.bind.annotation.RestController;
  6. import java.util.HashMap;
  7. import java.util.Map;
  8. // 表示该服务接口全部返回 json 格式 默认每个方法都加了 @ResponseBody
  9. @RestController
  10. // 表示所扫描到的服务
  11. @EnableAutoConfiguration
  12. public class HelloWorldController {
  13. @RequestMapping("/hello")
  14. public String hello() {
  15. return "hello";
  16. }
  17. @RequestMapping("/getMap")
  18. public Map<String, Object> getMap() {
  19. Map<String, Object> resultMap = new HashMap<>();
  20. resultMap.put("code", "200");
  21. resultMap.put("msg", "成功");
  22. return resultMap;
  23. }
  24. // 主函数运行 springboot 项目
  25. public static void main(String[] args) {
  26. SpringApplication.run(HelloWorldController.class, args);
  27. }
  28. }



      结果

  1. ......
  2. . ____ _ __ _ _
  3. /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
  4. ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
  5. \\/ ___)| |_)| | | | | || (_| | ) ) ) )
  6. ' |____| .__|_| |_|_| |_\__, | / / / /
  7. =========|_|==============|___/=/_/_/_/
  8. :: Spring Boot :: (v2.1.6.RELEASE)
  9. ......
  10. ...Registering beans for JMX exposure on startup
  11. ...Tomcat started on port(s): 8080 (http)
  12. ...Started HelloWorldController in 5.806 seconds (JVM running for 10.606)



Spring Boot 第二种启动方式

      项目中肯定不止一个 Controller,我们当然希望项目启动时将所有的 Controller 全部加载进来,这种情况又该如何配置呢?比如此时有两个 Controller,都需要被执行。

        HelloWorldController.java

  1. package com.springboot.controller;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RestController;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. @RestController
  8. public class HelloWorldController {
  9. @RequestMapping("/hello")
  10. public String hello() {
  11. return "hello";
  12. }
  13. @RequestMapping("/getMap")
  14. public Map<String, Object> getMap() {
  15. Map<String, Object> resultMap = new HashMap<>();
  16. resultMap.put("code", "200");
  17. resultMap.put("msg", "成功");
  18. return resultMap;
  19. }
  20. }



        IndexController.java

  1. package com.springboot.controller;
  2. import org.springframework.web.bind.annotation.RequestMapping;
  3. import org.springframework.web.bind.annotation.RestController;
  4. @RestController
  5. public class IndexController {
  6. @RequestMapping("/index")
  7. public String index() {
  8. return "index";
  9. }
  10. }



      App.java

  1. package com.springboot.app;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  4. import org.springframework.context.annotation.ComponentScan;
  5. // 扫描指定包下的服务
  6. @ComponentScan("com.springboot.controller")
  7. // 表示所扫描到的服务
  8. @EnableAutoConfiguration
  9. public class App {
  10. // 项目中不需要有多个 main 方法只需要有一个入口就可以了
  11. public static void main(String[] args) {
  12. // 主函数运行 springboot 项目
  13. SpringApplication.run(App.class, args);
  14. }
  15. }



      删除其他服务的主函数 main(),只保留一个即可。

      并且删除其他服务的 @EnableAutoConfiguration 注解,只在主函数服务中添加。

      通过 @ComponentScan 注解扫描你需要的服务。

      启动 App.java,其他两个服务也可以访问到了。

Spring Boot 第三种启动方式

      开发中,我们经常使用以下3个注解注解 main 类。

      分别是 @Configuration@EnableAutoConfiguration@ComponentScan。由于这些注解一般都是一起使用,Spring Boot 便提供了一个统一的注解 @SpringBootApplication

      需要注意的是:@SpringBootApplication 只能扫描同级包下。不同包下的可以使用 @SpringBootApplication 结合 @EnableAutoConfiguration@ComponentScan扫描注入。

      其中 @ComponentScan 很有用,可以通过该注解指定扫描某些包下包含如下注解的 Beans:@Component@Service@Repository@Controller@Entity 等等均自动注册为 Spring Beans。

      App.java

  1. package com.springboot.app;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.context.annotation.ComponentScan;
  5. // 相当于 @ComponentScan("com.springboot.app") 只扫描同级包下
  6. // 解决办法提升当前App类的包范围("com.springboot"),或者结合 @ComponentScan使用
  7. @SpringBootApplication
  8. // 扫描指定包下的服务
  9. @ComponentScan("com.springboot.controller")
  10. public class App {
  11. // 项目中不需要有多个 main 方法只需要有一个入口就可以了
  12. public static void main(String[] args) {
  13. // 主函数运行 springboot 项目
  14. SpringApplication.run(App.class, args);
  15. }
  16. }


✍️本章节到这里就结束了,喜欢的话就点赞

Spring Boot 简介与入门(2.1.6版)的更多相关文章

  1. Spring Boot从入门到精通之:一、Spring Boot简介及快速入门

    Spring Boot Spring Boot 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来 ...

  2. spring boot(一):入门篇

    构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

  3. Spring Boot简介

    Spring Boot简介 Spring Boot是为了简化Spring开发而生,从Spring 3.x开始,Spring社区的发展方向就是弱化xml配置文件而加大注解的戏份.最近召开的SpringO ...

  4. Spring Boot(一):入门篇+前端访问后端

    转自:Spring Boot(一):入门篇 什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发 ...

  5. Spring Boot基础:Spring Boot简介与快速搭建(1)

    1. Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的创建.运行.调试.部署等. Spring Boot默认使用tomca ...

  6. Spring Boot:快速入门教程

    什么是Spring Boot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...

  7. Spring Boot【快速入门】简单案例

    Spring Boot[快速入门]   Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point ...

  8. Spring Boot 2.x 入门前的准备-IntelliJ IDEA 开发工具的安装与使用

    常用的用于开发 spring boot 项目的开发工具有 eclipse 和 IntelliJ IDEA 两种,最近有声音提出 visual code 也开始流行开发 java,而且确实如此, vs ...

  9. Sping Boot入门到实战之入门篇(一):Spring Boot简介

    该篇为Spring Boot入门到实战系列入门篇的第一篇.对Spring Boot做一个大致的介绍. 传统的基于Spring的Java Web应用,需要配置web.xml, applicationCo ...

随机推荐

  1. excel表格导出之后身份证号列变成了科学计数法

    excel表格导出之后身份证号列变成了科学计数法 解决:写sql查询出所有数据,并在身份证列添加字符,然后导出,将要复制的excel表格设置单元格格式问文本类型,然后复制粘贴,再把加入的字符删除,搞定 ...

  2. unity_实用小技巧(空指针错误)

    在游戏开发中,空指针错误是我们最常见也是最容易出现的错误.下面介绍一下博主近期遇见的空指针错误 如上图,有两个类,如果此时我们在图2中调用图1的单例模式可能会出现空指针错误. 原因在于:编译器可能先执 ...

  3. 【原创】Linux PSCI框架

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  4. Oracle - Tables

    创建表 a: Sql语句创建 -- Create table create table Table_Name ( 字段1 VARCHAR2(50), 字段2 VARCHAR2(50) not null ...

  5. 文件系统【图片处理】(基于thumbnailator)典藏版-壹

    很多系统开发中都会碰到文件相关的处理,最近顺手开发一个小型文件系统的过程中碰到图片缩略图的需求,需要在显示的时候提供缩略图,下载的时候提供原图,大家直接想到的可能是java自带的图片处理类,但是处理过 ...

  6. fiddler的安装与使用(二)使用fiddler捕获会话信息

    前章回顾: 上一遍文章我们已经安装好了fiddler,并解了fiddler的工作原理,接下来开始使用fiddler捕获浏览器会话信息. fiddler基本界面: 首先启动fiddler,然后打开浏览器 ...

  7. BZOJ 1935: [Shoi2007]Tree 园丁的烦恼 +CDQ分治

    1935: [Shoi2007]Tree 园丁的烦恼 参考与学习:https://www.cnblogs.com/mlystdcall/p/6219421.html 题意 在一个二维平面中有n颗树,有 ...

  8. BZOJ2152 聪聪可可 (点分治)

    2152: 聪聪可可 题意: 在一棵边带权的树中,问任取两个点,这两个点间的权值和是3的倍数的概率. 思路: 经典的点分治题目. 利用点分治在计算所有路径长度,把路径长度对3取模,用t[0],t[1] ...

  9. android CTS 命令

    > h //help Host:  help: show this message  help all: show the complete tradefed help  exit: grace ...

  10. 还不会用 K8s 集群控制器?那你会用冰箱吗?(多图详解)

    作者 | 阿里云售后技术专家 声东 导读:当我们尝试去理解 K8s 集群工作原理的时候,控制器(Controller)肯定是一个难点.这是因为控制器有很多,具体实现大相径庭:且控制器的实现用到了一些较 ...