11.1 Spring Boot(简介)

1、1 Spring Boot 简介

        Springboot:spring全家桶技术之一,几乎所有 javaWeb 编程都会使用这个框架 。它是集成框架。它能简化之前采用 SpringMVC + Spring + Mybayis 框架进行开发的过程。—简化开发(主要是简化配置),提高开发效率   

       在以往我们采用SpringMVC + Spring + MyBatis框架进行开发的时候,搭建和整合三大框架,我们需要做很多工作,比如配置web.xml,配置Spring,配置MyBatis,并将它们整合在一起等,而Spring Boot框架对此开发过程进行了革命性的颠覆,完全抛弃了繁琐的xml配置过程,采用大量的默认配置简化我们的开发过程。--- 约定优于配置,配置优于代码

        所以采用Spring Boot可以非常容易和快速地创建基于Spring框架的应用程序,它让编码变简单了,配置变简单了,部署变简单了,监控变简单了。正因为 Spring Boot 它化繁为简,让开发变得极其简单和快速,所以在业界备受关注。--现在大部分项目都是基于springboot开发

Spring Boot在国内的关注趋势图:百度指数

1、2 Spring Boot的特性

  • 能够快速创建基于Spring的应用程序
  • 能够直接使用java main方法启动内嵌的Tomcat服务器运行Spring Boot程序,不需要部署war包文件
  • 提供约定的starter POM来简化Maven配置,让Maven的配置变得简单
  • 自动化配置,根据项目的Maven依赖配置,Spring boot自动配置Spring、Spring mvc等
  • 提供了程序的健康检查等功能
  • 基本可以完全不使用XML配置文件,采用注解配置、Java配置

1、3 Spring Boot 四大核心

  1. 自动配置:针对很多Spring应用程序和常见的应用功能,Spring Boot能自动提供相关配置
  2. 起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的依赖库
  3. Actuactor:
  4. 命令行界面

推荐使用Java 8,Spring Boot 1.x系列的版本兼容Java 6,Spring Boot 2.x系列需要至少Java8


2、Spring Boot 入门案例

2.1 开发步骤

项目名称:001-springboot-first

(1)创建一个Moudle,选择类型为 SPring INitializer 快速构建

 (2)设置GAV坐标及pom配置信息

G:Group

A:artifact

V:version

(3)选择Spring Boot版本及依赖

 (4)设置模块名称、Content Root路径及模块文件的目录

 点击Finish,如果是第一次创建,在右下角会提示正在下载相关的依赖

(5)项目创建完毕,如下


2.2入门案例

重复上述步骤,接着完成如下流程

(6)对POM.xml文件进行解释

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!--继承SpringBoot框架的一个父项目,所有自己开发的Spring Boot都必须的继承-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <!--当前项目的GAV坐标-->
    <groupId>com.bjpowernode.springboot</groupId>
    <artifactId>001-springboot-first</artifactId>
    <version>1.0.0</version>

    <!--maven项目名称,可以删除-->
    <name>001-springboot-first</name>
    <!--maven项目描述,可以删除-->
    <description>Demo project for Spring Boot</description>

    <!--maven属性配置,可以在其它地方通过${}方式进行引用-->
    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <!--SpringBoot框架web项目起步依赖,通过该依赖自动关联其它依赖,不需要我们一个一个去添加了-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--SpringBoot框架的测试起步依赖,例如:junit测试,如果不需要的话可以删除-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

    </dependencies>

    <!--修建:编译-->
    <build>
        <!--编译哪个资源-->
        <resources>


        </resources>

        <!--插件-->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

(7) 对SpringBoot项目结构进行说明

文件后缀:早期的操作系统默认只有三位,jpg->jpeg;doc->docx……

  • .mvn|mvnw|mvnw.cmd:使用脚本操作执行maven相关命令,国内使用较少,可删除
  • .gitignore:使用版本控制工具git的时候,设置一些忽略提交的内容
  • static|templates:后面模板技术中存放文件的目录

static:放一些静态内容 css js img

templates:基于模板的html

  • application.properties:SpringBoot的配置文件,很多集成的配置都可以在该文件中进行配置,例如:Spring、springMVC、Mybatis、Redis等。目前配置了 tomcat 端口号
  • Application.java:SpringBoot程序执行的入口,执行该程序中的main方法,SpringBoot就启动了,自动启动内置tomcat运行
#配置端口
server.port=9001

#配置站点名称
server.servlet.context-path=/001-springboot-first

#激活环境配置
spring.profiles.active=product

(8)创建一个Spring MVC的SpringBootController

package com.bjpowernode.springboot.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * ClassName:SpringBootController
 * Package:com.bjpowernode.springboot.web
 * Description:<br/>
 */
@Controller
public class SpringBootController {

    @RequestMapping(value = "/springBoot/say")
    public @ResponseBody String say() {
        return "Hello,springBoot!";
    }
}

注意:新创建的类一定要位于Application同级目录或者下级目录,否则SpringBoot加载不到。

(9)IDEA中右键,运行Application类中的main方法( 类似于 java 程序运行那样

@SpringBootApplication//springboot 启动入口类
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

(10)在浏览器中输入   http://localhost:8080/springBoot/say 访问


2.3 入门案例分析

  • Spring Boot的父级依赖spring-boot-starter-parent配置之后,当前的项目就是Spring Boot项目
  • spring-boot-starter-parent是一个Springboot的父级依赖,开发SpringBoot程序都需要继承该父级项目,它用来提供相关的Maven默认依赖,使用它之后,常用的jar包依赖可以省去version配置
  • Spring Boot提供了哪些默认jar包的依赖,可查看该父级依赖的pom文件
  • 如果不想使用某个默认的依赖版本,可以通过pom.xml文件的属性配置覆盖各个依赖项,比如覆盖Spring版本

        <properties>

             <spring.version>5.0.0.RELEASE</spring.version>

        </properties>

  • @SpringBootApplication注解是Spring Boot项目的核心注解,主要作用是开启Spring自动配置,如果在Application类上去掉该注解,那么不会启动SpringBoot程序
  • main方法是一个标准的Java程序的main方法,主要作用是作为项目启动运行的入口
  • @Controller 及 @ResponseBody 依然是我们之前的Spring MVC,因为Spring Boot的里面依然是使用我们的Spring MVC + Spring + MyBatis 等框架

2.4 核心配置文件

  1. .properties文件(默认采用该文件):数据源的配置,继承了hashMap,所以呈现键值对的形式
  2. .yml文件:yml 是一种 yaml 格式的配置文件,主要采用一定的空格、换行等格式排版进行配置

 2.4.1 properties配置文件

#配置端口
server.port=9001
#配置站点名称
server.servlet.context-path=/001-springboot-first

配置完毕之后,启动浏览器测试

  2.4.2 yml配置文件

        yaml 是一种直观的能够被计算机识别的的数据序列化格式,容易被人类阅读,yaml 类似于 xml,但是语法比xml 简洁很多,值与前面的冒号配置项必须要有一个空格, yml 后缀也可以使用 yaml 后缀

server:
  port: 8001
  servlet:
    context-path: /001-springboot-first

注意:当两种格式配置文件同时存在,使用的是.properties配置文件,为了演示yml,可以先将其改名,重新运行Application,查看启动的端口及上下文根

2.4.3 多环境配置

        在实际开发的过程中,我们的项目会经历很多的阶段(开发->测试->上线),每个阶段的配置也会不同,例如:端口、上下文根、数据库等,那么这个时候为了方便在不同的环境之间切换,SpringBoot提供了多环境配置,具体步骤如下

  • 为每个环境创建一个配置文件,命名必须以application-环境标识.properties|yml
  • 切换不同阶段的配置文件需要在总配置文件application.properties进行环境的激活

#SpringBoot的总配置文件

#激活开发环境
#spring.profiles.active=dev

#激活测试环境
#spring.profiles.active=test

#激活生产环境
spring.profiles.active=product

2.4.4 Spring Boot 自定义配置

        在SpringBoot的核心配置文件中,除了使用内置的配置项之外,我们还可以在自定义配置,然后采用如下注解去读取配置的属性值

  ① @Value注解

项目名称:007-springboot-custom-configuration

用于逐个读取application.properties中的配置

案例演示

  • 在核心配置文件applicatin.properties中,添加两个自定义配置项school.name和school.website。在IDEA中可以看到这两个属性不能被SpringBoot识别,背景是桔色的

  • 在SpringBootController中定义属性,并使用@Value注解或者自定义配置值,并对其方法进行测试
/**
 * ClassName:SpringBootController
 * Package:com.bjpowernode.springboot.web
 * Description:<br/>
 */
@Controller
public class SpringBootController {

    @Value("${school.name}")
    private String schoolName;

    @Value("${school.websit}")
    private String schoolWebsit;

    @RequestMapping(value = "/springBoot/say")
    public @ResponseBody String say() {
        return schoolName + "------" + schoolWebsit;
    }
}

​​​​​​​  ② @ConfigurationProperties

项目名称:008-springboot-custom-configuration

将整个文件映射成一个对象,用于自定义配置项比较多的情况

案例演示

  • 在com.bjpowernode.springboot.config包下创建ConfigInfo类,并为该类加上Component和ConfigurationProperties注解,prefix可以不指定,如果不指定,那么会去配置文件中寻找与该类的属性名一致的配置,prefix的作用可以区分同名配置
**
 * ClassName:ConfigInfo
 * Package:com.bjpowernode.springboot.config
 * Description:<br/>
 */
@Component
@ConfigurationProperties(prefix = "school")
public class ConfigInfo {

    private String name;

    private String websit;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getWebsit() {
        return websit;
    }

    public void setWebsit(String websit) {
        this.websit = websit;
    }
}
  • 在SpringBootController中注入ConfigInfo配置类
@Autowired
private ConfigInfo configInfo;
  • 修改SpringBootController类中的测试方法
@RequestMapping(value = "/springBoot/configInfo")
public @ResponseBody String say() {
    return configInfo.getName() + "=======" + configInfo.getWebsit();
}

③ 警告解决

  • 在ConfigInfo类中使用了ConfigurationProperties注解后,IDEA会出现一个警告,不影响程序的执行

  • 点击open documentnation跳转到网页,在网页中提示需要加一个依赖,我们将这个依赖拷贝,粘贴到pom.xml文件中

 

<!--解决使用@ConfigurationProperties注解出现警告问题-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

​​​​​​​ 中文乱码

如果在SpringBoot核心配置文件中有中文信息,会出现乱码

  1. 一般在配置文件中,不建议出现中文(注释除外)
  2. 如果有,可以先转化为ASCII码

⑤ 友情提示

大家如果是从其它地方拷贝的配置文件,一定要将里面的空格删干净


2.5 ​​​​​​​ Spring Boot前端使用JSP

①在​​​​​​​​​​​​​​pom.xml文件中配置以下依赖项

<!--引入Spring Boot内嵌的Tomcat对JSP的解析包,不加解析不了jsp页面-->
<!--如果只是使用JSP页面,可以只添加该依赖-->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

<!--如果要使用servlet必须添加该以下两个依赖-->
<!-- servlet依赖的jar包-->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
</dependency>

<!-- jsp依赖jar包-->
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.1</version>
</dependency>

<!--如果使用JSTL必须添加该依赖-->
<!--jstl标签依赖的jar包start-->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

②​​​​​​​​​​​​​​在pom.xml的build标签中要配置以下信息

        SpringBoot要求jsp文件必须编译到指定的META-INF/resources目录下才能访问,否则访问不到。其实官方已经更建议使用模板技术(后面会讲模板技术)

<!--
    SpringBoot要求jsp文件必须编译到指定的META-INF/resources目录下才能访问,否则访问不到。
    其它官方已经建议使用模版技术(后面会课程会单独讲解模版技术)
-->
<resources>
    <resource>
        <!--源文件位置-->
        <directory>src/main/webapp</directory>
        <!--指定编译到META-INF/resource,该目录不能随便写-->
        <targetPath>META-INF/resources</targetPath>
        <!--指定要把哪些文件编译进去,**表示webapp目录及子目录,*.*表示所有文件-->
        <includes>
            <include>**/*.*</include>
        </includes>
    </resource>
</resources>

③​​​​​​​​​​​​​​在application.properties文件配置Spring MVC的视图展示为jsp,这里相当于Spring MVC的配置

#配置SpringMVC的视图解析器
#其中:/相当于src/main/webapp目录
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp

④​​​​​​​​​​​​​​在com.bjpowernode.springboot.controller包下创建JspController类,并编写代码

/**
 * ClassName:SpringBootController
 * Package:com.bjpowernode.springboot.web
 * Description:<br/>
 */
@Controller
public class SpringBootController {

    @RequestMapping(value = "/springBoot/jsp")
    public String jsp(Model model) {

        model.addAttribute("data","SpringBoot 前端使用JSP页面!");

        return "index";
    }
}

⑤​​​​​​​​​​​​​​在src/main 下创建一个webapp目录,然后在该目录下新建index.jsp页面

        如果在webapp目录下右键,没有创建jsp的选项,可以在Project Structure中指定webapp为Web Resource Directory

 ⑥在jsp中获取Controller传递过来的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值