2022,不会SpringBoot,后端真的不好找工作!

918 阅读5分钟

1. SSM 框架存在的痛点

前面我们学习了 SSM 框架的整合,整合之后感觉还挺好用,实际上有很多痛点。

痛点一:只要整合一个框架,就要写一个配置文件,简直太麻烦了。

痛点二:需要的 Maven 依赖太多了,那么长一串,记性差的根本记不住。

痛点三:每次启动项目都需要配置 Tomcat,如果 Tomcat 有问题,项目就起不来了。简直竹篮打水一场空。

那有没有这样一个框架:

1.不需要很多配置

2.不需要很多 Maven 依赖

3.不需要配置 Tomcat

创建完一个 WEB 项目用不了5分钟,并且能快速启动运行?

有的,SpringBoot 闪亮登场。

2. 邂逅 SpringBoot

Spring Boot 是 Pivotal 团队在 Spring 的基础上开发的一套全新的框架,其设计目的主要是为了简化 Spring 应用的搭建和开发过程。

Spring Boot 去除了大量的 XML 配置文件,简化了复杂的依赖管理。而且 内置 Tomcat,不需要配置外部 Tomcat。

Spring Boot 拥有 Spring 一切优秀特性,Spring 能干的事,Spring Boot 也能干,而且使用更加简单,功能更加丰富,性能更加稳定而健壮。

随着近些年来微服务技术的流行,Spring Boot 也成了时下炙手可热的技术。

Spring Boot 集成了大量常用的第三方技术,大部分的 Spring Boot 应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。

总之一句话:SpringBoot 牛逼!SpringBoot YYDS!SpringBoot 真 TMD 好用!

3. HelloWorld

这里我们先来感受一下创建 SpringBoot 项目的流程:

开发工具:IDEA

构建工具:Maven

1.新建 SpringBoot 项目

这个页面表示选择你需要的依赖,我们这里只选择 Spring Web 依赖。

2.修改程序的端口和上下文路径。

3.开发 Controller

4.启动项目

5.测试

成功!撒花!

4. 项目讲解

1.pom 文件

(1) 我们打开该项目的 pom 文件,发现有一个 parent 标签。

我们依次打开标签里面对应的文件,发现原来 SpringBoot 项目默认配置好了我们能用到的所有依赖的版本。

所以在添加 spring web 依赖的时候没有指定版本也能下载该依赖。

(2)SpringBoot 中约定的依赖叫做 starter。

我们引入了 starter,其实就相当于引入了一个依赖组,这个依赖组下面包含一堆我们需要的依赖。

2.配置文件

SpringBoot 项目约定必须在 resources 目录下新建 .yml 或者 .properties 的核心配置文件,并且配置文件的名字必须是 application

(1)application.yml :

格式:阶梯式,子级属性前面空格 (2)application.properties :

格式:key = value

server.port:表示项目的端口号,如果不配置,默认是 8080。

在实际开发中文件的配置要看公司的开发规范,不过我感觉用 application.yml 的比较多。

(3)多环境配置

在工作中我们开发的项目一般会部署在多个环境下。

一般分为开发环境(dev)、测试环境(test)、生产环境(prod)。

不同环境的配置有可能是不一样的,为了快速切换配置环境,SpringBoot 提供了 如下方式启用指定的配置文件:

application.yml 是主配置环境,主要用些写一些相同的配置。

spring.profiles.active 用来激活指定的配置文件。

激活的配置文件会与主配置文件合并起来作为该项目的完整配置。

3.入口类

springboot 约定必须要在项目包路径最外层创建一个全局的入口类:xxxApplication。

这个入口类有且只能有一个。

5. 相关注解

(1)创建对象:

  • @Component
  • @Controller
  • @Service
  • @Repository
  • @Configuration + @Bean

这些注解在讲 Spring 的时候提到过,不知道的可以看下面这篇文章,这里不再逐一赘述。

深入浅出 Spring

(2)注入属性 @Value


  • 普通变量

修改配置文件:

普通变量赋值时直接在变量声明上添加 @Value 注解即可:

/**
 * @Desc:
 * @Author: 公众号:知否技术
 * @date: 下午7:23 2022/5/10
 */
@Component
public class PayUtil {

    @Value("${appKey}")
    private String appKey;

    @Value("${appSecret}")
    private String appSecret;

    public String getAppKey() {
        return appKey;
    }

    public void setAppKey(String appKey) {
        this.appKey = appKey;
    }

    public String getAppSecret() {
        return appSecret;
    }

    public void setAppSecret(String appSecret) {
        this.appSecret = appSecret;
    }
}

测试:

@SpringBootTest
class SpringbootDemoApplicationTests {

    @Autowired
    private PayUtil payUtil;

    @Test
    void contextLoads() {
        System.out.println("appKey: "+payUtil.getAppKey());
        System.out.println("appKey: "+payUtil.getAppSecret());
    }

}


  • 静态变量

静态变量赋值时需要在 set 方法上添加 @Value 注解:

@Component
public class PayUtil {
    private static String appKey;
    private static String appSecret;

    public String getAppKey() {
        return appKey;
    }
    
    @Value("${appKey}")
    public void setAppKey(String appKey) {
        this.appKey = appKey;
    }

    public String getAppSecret() {
        return appSecret;
    }
    
    @Value("${appSecret}")
    public void setAppSecret(String appSecret) {
        this.appSecret = appSecret;
    }
}

测试结果和上面一样。

(3)@ConfigurationProperties

这个注解用来指定属性的前缀。

例如:

6. 整合 Mybatis

1.添加 Mybatis 依赖

<!--  包含 Mybatis 核心依赖 -->
<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>2.1.3</version>
</dependency>
<!-- 连接 mysql 驱动-->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.28</version>
</dependency>

2.修改 SpringBoot 配置

application.yml:

server:
  port: 8081
  servlet:
    context-path: /springboot_demo
# 数据源配置
spring:
  datasource:
    username: root
    password: 12345678
    url: jdbc:mysql://localhost:3306/ssm?allowPublicKeyRetrieval=true&useSSL=false
    driver-class-name: com.mysql.cj.jdbc.Driver
# mybatis配置
mybatis:
  type-aliases-package: com.zhifou.model
  mapper-locations: classpath:mapper/*Dao.xml

3.创建 model、service、dao

因为太简单,这里不再过多赘述

4.创建 controller

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/list")
    @ResponseBody
    public Object getUserList() {
        List<User> userList = userService.getUserList();
        return userList;
    }
}

5.入口类添加注解

@MapperScan:这个注解用来扫描 Dao 所在的路径。

6.测试

成功!撒花!

7.完整代码

链接: https://pan.baidu.com/s/1-T5HIxUtfiokSH7wOZwCdw 
提取码: mnm0