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。

<!-- 引入springboot父类依赖 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
</parent>

<dependencies>
    <!-- springboot-web 组件 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>


HelloWorld

      HelloWorldController.java

package com.springboot.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

// 表示该服务接口全部返回 json 格式 默认每个方法都加了 @ResponseBody
@RestController
// 表示所扫描到的服务
@EnableAutoConfiguration
public class HelloWorldController {

    @RequestMapping("/hello")
    public String hello() {
        return "hello";
    }

    @RequestMapping("/getMap")
    public Map<String, Object> getMap() {
        Map<String, Object> resultMap = new HashMap<>();
        resultMap.put("code", "200");
        resultMap.put("msg", "成功");
        return resultMap;
    }

    // 主函数运行 springboot 项目
    public static void main(String[] args) {
        SpringApplication.run(HelloWorldController.class, args);
    }

}



      结果

......

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::       (v2.1.6.RELEASE)

......

...Registering beans for JMX exposure on startup
...Tomcat started on port(s): 8080 (http)
...Started HelloWorldController in 5.806 seconds (JVM running for 10.606)



Spring Boot 第二种启动方式

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

        HelloWorldController.java

package com.springboot.controller;

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

import java.util.HashMap;
import java.util.Map;

@RestController
public class HelloWorldController {

    @RequestMapping("/hello")
    public String hello() {
        return "hello";
    }

    @RequestMapping("/getMap")
    public Map<String, Object> getMap() {
        Map<String, Object> resultMap = new HashMap<>();
        resultMap.put("code", "200");
        resultMap.put("msg", "成功");
        return resultMap;
    }

}



        IndexController.java

package com.springboot.controller;

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

@RestController
public class IndexController {

    @RequestMapping("/index")
    public String index() {
        return "index";
    }

}



      App.java

package com.springboot.app;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;

// 扫描指定包下的服务
@ComponentScan("com.springboot.controller")
// 表示所扫描到的服务
@EnableAutoConfiguration
public class App {

    // 项目中不需要有多个 main 方法只需要有一个入口就可以了
    public static void main(String[] args) {
        // 主函数运行 springboot 项目
        SpringApplication.run(App.class, args);
    }

}



      删除其他服务的主函数 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

package com.springboot.app;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

// 相当于 @ComponentScan("com.springboot.app") 只扫描同级包下
// 解决办法提升当前App类的包范围("com.springboot"),或者结合 @ComponentScan使用
@SpringBootApplication
// 扫描指定包下的服务
@ComponentScan("com.springboot.controller")
public class App {

    // 项目中不需要有多个 main 方法只需要有一个入口就可以了
    public static void main(String[] args) {
        // 主函数运行 springboot 项目
        SpringApplication.run(App.class, args);
    }

}


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

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. WPF 浏览PDF 文件

    添加成功后会在工具箱里看到下图所示的控件.打开VS2010,新建项目(WpfPDFReader),右键项目添加User Control(用户控件).因为Adobe PDF Reader COM 组件是 ...

  2. tensorflow学习笔记——自编码器及多层感知器

    1,自编码器简介 传统机器学习任务很大程度上依赖于好的特征工程,比如对数值型,日期时间型,种类型等特征的提取.特征工程往往是非常耗时耗力的,在图像,语音和视频中提取到有效的特征就更难了,工程师必须在这 ...

  3. 【selenium】- selenium简介

    本文由小编根据慕课网视频亲自整理,转载请注明出处和作者. 1. Selenium的来历 2. Selenium家庭成员 Selenium RC: Selenium 1 Selenium Webdriv ...

  4. CH 5101 最长公共上升子序列

    题目传送门 题解:F[i][j] 表示 对于第一个数列枚举到i来说, 第二个数列以j结尾的最大长度是多少. 那么对于更新 F[i] -> F[i+1]来说  如果 a[i+1] == b[j] ...

  5. 企查猫app数据解密

    通过最近几天的对企查猫的研究,目前已经成功将企查猫的数据加密和响应数据加密完成解密. 和之前对启信宝APP的数据解密操作基本一样,不过企查猫对请求和响应都使用aes加密了,抓包的时候可以看到,具体可以 ...

  6. Java开发必备工具 ------------工欲善其事,必先利其器

    java企业级开发基本工具 一.开发必备工具 1.Java开发环境 JDK (官网下载即可,需要注册账户) JRE 2.Java企业编码开发工具 IntelliJ IDEA(建议使用Idea,插件使用 ...

  7. debug 模式缓慢

    debug 模式启动服务器,然后在 breakopints下可以看到打的断点.清除全部重启服务器,问题解决.

  8. springboot过滤器的实现

    springboot过滤器的实现 如下所示: import javax.servlet.*; import javax.servlet.annotation.WebFilter;import java ...

  9. #umn 来美国近一个月的简单见闻

    时光如梭,到美国已经快要一个月了,从最初12+4飞行的劳累,到一开始每天吃了上顿没下顿的担心,到后来开始上课的不适,现如今生活已经基本步入了正轨,每天上上课写写作业,去rec center打打球健健身 ...

  10. 渗透之路基础 -- 服务端请求伪造SSRF

    简介:SSRF 服务器端请求伪造,有的大型网站在web应用上提供了从其他服务器获取数据的功能.使用户指定的URL web应用获取图片,下载文件,读取文件内容.通常用于控制web进而探测内网服务以及攻击 ...