基于SpringBoot实现SSM框架整合

前言

之前学习了Spring框架的JDBC、MVC,SpringBoot也是Spring框架下面的一个子项目,是Spring生态的一部分;

为什么我们要使用Spring的Boot子项目呢?

如果单独使用Spring或者SpringMVC作为Web开发框架,需要通过大量的配置类/配置文件把JDBC、Druid、Redis等Web开发依赖包放到Spring容器中;

Spring推出了1个快速开发工具包(SpringBoot),可以让程序员更加方便、快速启动Spring容器并自动整合各种Web开发依赖;

SpringBoot的核心功能=Tomcat+Spring+SpringMVC的功能;

Maven和SpringBoot的联系?

  • maven是实现SpringBoot的基础,SpringBoot项目本身就是Maven项目。
  • 在maven项目中使用springboot的多个starter加几个约定,就能成为SpringBoot项目了。
  • Spring Boot工程本质上就是一个Maven工程。

SpringBoot有以下特点:

1.独立运行

Spring Boot 而且内嵌了各种 servlet 容器,Tomcat、Jetty 等, 现在不再需要打成 war 包部署到容器中,Spring Boot 只要打成一个可 执行的 jar 包就能独立运行,所有的依赖包都在一个 jar 包内。

2.简化配置

spring-boot-starter-web 启动器自动依赖其他组件,简少了 maven 的配置。

3.自动配置

Spring Boot 能根据当前类路径下的类、jar 包来自动配置 bean, 如添加一个 spring-boot-starter-web 启动器就能拥有 web 的功能,无 需其他配置。

4.无代码生成和 XML 配置

Spring Boot 配置过程中无代码生成,也无需 XML 配置文件就能完成所有配置工作,这一切都是借助于条件注解完成的, 这也是 Spring4.x 的核心功能之一

5.避免大量的 Maven 导入和各种版本冲突

6.应用监控

Spring Boot 提供一系列端点可以监控服务及应用,做健康检测。

一、SpringBoot概述

通过Spring的缺点,看到SpringBoot的优势;

1.Spring优缺点

1.1.优点

Spring是一个轻量级的Java开源框架,通过IOC和AOP技术实现高内聚、低耦合的Web应用开发;

1.2.缺点

  • 当添加1个框架或技术时,就需要添加相应的maven依赖;
  • 当添加1个框架或技术时,引入的依赖可能会出现依赖冲突;
  • 当添加1个框架或技术时,需要添加大量的配置信息;

2.SpringBoot概述

SpringBoot是对Spring的缺点进行大大改善和优化,SpringBoot基于约定大于配置的思想,提供了大量默认配置和实现;

使用SpringBoot之后,程序员只需要按照SpringBoot规定的方式去进行程序代码的开发即可,无需再去编写一堆复杂的配置;

3.SpringBoot主要功能

版本锁定:SpringBoot在父工程中进行了大量常见依赖的版本锁定

起步依赖:SpringBoot按功能应用场景将需要的依赖进行组合,允许程序员以starter的方式在maven中进行引入一组依赖;

自动配置:在导入starter之后SpringBoot主要帮我们完成了2件事,相关组件的自动导入(按条件装配),相关组件的自动装配;

内置Tomcat:SpringBoot内置了一个tomcat,使用它开发的程序无需再进行tomcat部署,可直接运行;

总之:SpringBoot最主要作用就是帮我们快速的构建庞大的Spring项目,并且尽可能的减少配置,让程序员去关注业务而非配置。

二、SpringBoot入门案例

搭建一个SpingBoot项目,实现访问浏览器地址 localhost:8080/index,返回 hello, springboot!

1.创建工程

1个SpringBoot工程要求必须去继承1个springboot提供的父工程(org.springframework.boot),父工程中引入了大量的依赖, 并对大量的依赖版本进行了锁定;

当前SpringBoot工程继承了这个父工程之后,我们就无需再在当前项目中添加依赖;

基于SpringBoot实现SSM框架整合基于SpringBoot实现SSM框架整合
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>
<span>&lt;</span><span>groupId</span><span>&gt;</span>com.zhanggen<span><span>groupId</span><span>&gt;</span>
<span>&lt;</span><span>artifactId</span><span>&gt;</span>springboot-quickstart<span><span>artifactId</span><span>&gt;</span>
<span>&lt;</span><span>version</span><span>&gt;</span>1.0-SNAPSHOT<span><span>version</span><span>&gt;</span>

<span>&lt;</span><span>parent</span><span>&gt;</span>
    <span>&lt;</span><span>groupId</span><span>&gt;</span>org.springframework.boot<span><span>groupId</span><span>&gt;</span>
    <span>&lt;</span><span>artifactId</span><span>&gt;</span>spring-boot-starter-parent<span><span>artifactId</span><span>&gt;</span>
    <span>&lt;</span><span>version</span><span>&gt;</span>2.2.2.RELEASE<span><span>version</span><span>&gt;</span>
<span><span>parent</span><span>&gt;</span>

<span>&lt;</span><span>dependencies</span><span>&gt;</span>
    <span>&lt;</span><span>dependency</span><span>&gt;</span>
        <span>&lt;</span><span>groupId</span><span>&gt;</span>org.springframework.boot<span><span>groupId</span><span>&gt;</span>
        <span>&lt;</span><span>artifactId</span><span>&gt;</span>spring-boot-starter-web<span><span>artifactId</span><span>&gt;</span>
    <span><span>dependency</span><span>&gt;</span>
<span><span>dependencies</span><span>&gt;</span>

project>

pom.xml

如果需要编译成jar包,pom.xml添加如下内容

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-maven-pluginartifactId>
      plugin>
    plugins>
  build>

2. 编写Controller

基于SpringBoot实现SSM框架整合基于SpringBoot实现SSM框架整合
package com.zhanggen.web.controller;

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

//这个文件和SpringMVC的Controller是一样的
@RestController
public class IndexController {
    @RequestMapping("/index")
    public String index() {
        return "hello springBoot!";
    }
}

IndexController.java

3. 编写启动类

基于SpringBoot实现SSM框架整合基于SpringBoot实现SSM框架整合
package com.zhanggen;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//这个类的位置;放到com.zhanggen包下面
@SpringBootApplication
public class QuickStartApplication {
    public static void main(String[] args) {
        //参数1:当前类字节码  参数2:args
        SpringApplication.run(QuickStartApplication.class, args);
    }
}

QuickStartApplication.java

4.案例解析

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:c6564004-abe4-4989-9085-1081b72a0923

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:390da7bc-c06d-4c65-88fa-24c95e0a2aa6

  • 我们的工程在引入spring-boot-starter-web依赖的时候,为什么没有指定版本?
  • spring-boot-starter-web是个啥,为什么引入了它之后,就不需要再引入我们原来做spring开发的那一堆包了?
  • 我们的程序没有部署到tomcat,为什么就可以被访问?
    [TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:78c2b2e2-0976-4f43-a851-4c5192ac3623
    [En]

    [TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:a3e5c9e2-5342-46a1-9ce8-d2eca55f53fd

4.1. 版本锁定

我们的项目继承了 spring-boot-starter-parent父工程,它内部已经锁定了一些常见依赖的版本号,故而在我们自己开发的工程中无需再指定依赖的版本。

基于SpringBoot实现SSM框架整合

4.2.起步依赖

SpringBoot根据场景将各种依赖组装成了一个个的集合(starter),我们根据当前SpringBoot的功能引入指定的starter即可。

基于SpringBoot实现SSM框架整合

4.3. 内置Tomcat

SpringBoot在中引入一个内置的tomcat,故而我们无需再将程序部署到Tomcat中即可运行。

4.4.默认配置

SpringBoot的约定大于配置,即SpringBoot的大量配置都有默认值,如果我们不去写配置就使用默认的。

比如说:T omcat默认端口 8080、redis 默认端口6379 、session 的过期默认时间为30m等等;

三、SpringBoot配置文件

SpringBoot是基于约定的,很多配置都有默认值;

但它也允许使用自己的配置替换默认配置,具体做法是在resources下创建文件:

1.自定义配置文件

我们可以在当前项目的resource目录下,创建以下3类文件,但配置文件的名称只能叫application;

  • application.yaml
  • application.yml
  • application.properties

SpringBoot启动时会依次加载:yaml、yml、properties文件,如果多个配置文件同时存在,后加载的会覆盖前面加载的内容。

2.yaml介绍

yaml和yml文件格式是一样的,是专门用来写配置文件的语言,非常简洁和强大。

2.1.语法

大小写敏感
使用缩进表示层级关系
[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:73eed409-6c80-4eed-bc5f-f367c6f2922c<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:6ba6a6d3-eea1-433e-873b-4c8942a9becb</font>*</details>
[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:2ea02d77-fc0d-428c-a0de-47bffbf3de0a<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:a5d52237-9127-4e42-878b-5bbbd35a1293</font>*</details>
server:
  port: 8082
  servlet:
    context-path: /itheima

2.2.数据格式

纯量:单个的、不可再分的值(包括字符串字符串、布尔值、数值、Null、时间类型)
username: 'jack'

对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
user:
  username: '张三'
  password: '123'

数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
addressList:
  - '北京'
  - '上海'
  - '广州'

3.SpringBoot读取配置文件的三种方式

在SpringBoot项目中有3种方式读取配置文件中的配置项目;

3.1.Environment(了解)

此对象是Spring框架提供的,用来表示整个应用运行时的环境,可以读取配置文件中的属性值并逐个注入到Bean对象的对应属性中;

3.2.@Value注解 (了解)

此注解是Spring框架提供的,用来读取配置文件中的属性值并逐个注入到Bean对象的对应属性中;

3.3.@ConfigurationProperties注解

此注解是SpringBoot框架提供的,用来快速、方便地将配置文件中的自定义属性值批量注入到某个Bean对象的相应属性中;

3.4.配置文件信息

基于SpringBoot实现SSM框架整合基于SpringBoot实现SSM框架整合
#自定义配置信息
server:
  port: 8002
  servlet:
    context-path: /zhanggen

#SpringBoot配置控制台输出彩色日志
spring:
  output:
    ansi:
      enabled: ALWAYS

#对象:键值对的集合
user:
  username: '张根'
  password: '123'

application.yaml

3.5.获取代码

基于SpringBoot实现SSM框架整合基于SpringBoot实现SSM框架整合
package com.zhanggen.web.controller;

import com.zhanggen.config.UserConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

//这个文件和SpringMVC的Controller是一样的
@RestController
public class IndexController {
    //注意Environment位于org.springframework.core.env.Environment包
    @Autowired
    private Environment environment;

    @Value("${user.username}")
    private String username;

    @Value("${user.password}")
    private String password;

    @Autowired
    private UserConfig userConfig;

    @RequestMapping("/index")
    public String index() {
        //方式1:使用Environment对象,获取配置文件中的值
        System.out.println(environment.getProperty("user.username"));
        System.out.println(environment.getProperty("user.password"));
        //方式2:使用@Value,获取配置文件中的值
        System.out.println(this.username);
        System.out.println(this.password);
        //方式3:通过定义UserConfig对象获取配置文件中配置信息
        System.out.println(userConfig.getUsername());
        System.out.println(userConfig.getPassword());
        return "hello springBoot!";

    }
}

IndexController.java

4.SpringBoot多环境配置

使用springBoot的配置文件application.yaml配置3套环境,分别是测试、开发、生产环境;

4.1.配置文件

基于SpringBoot实现SSM框架整合基于SpringBoot实现SSM框架整合

`

自定义配置信息

共有

user:
username: ‘公共’
password: ‘8899’

集合哪一套环境

spring:
profiles:
active: test

spring:
output:
ansi:
enabled: ALWAYS
profiles: test
server:
port: 8002
servlet:
context-path: /test
user:
username: ‘测试’
password: ‘122’

Original: https://www.cnblogs.com/sss4/p/16312148.html
Author: Martin8866
Title: 基于SpringBoot实现SSM框架整合

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/562599/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球