SpringBoot框架超详细笔记

这篇博客详细介绍了如何手动创建SpringBoot项目,包括从Maven项目开始配置,添加依赖,编写启动类,以及SpringBoot的核心优势。还涵盖了yaml文件的使用,包括读取单一数据和引用类型数据的方法。此外,博主讲解了整合第三方技术如Junit、Mybatis及Mybatis_Plus的步骤,并讨论了SSMP框架的使用。最后,提到了静态资源管理和完整的代码结构。
摘要由CSDN通过智能技术生成

1.1 SpringBoot项目创建

  • 从官网创建
  • idea中联网从官网创建
  • idea中联网从阿里云创建
  • SpringBoot项目手动创建

前三种创建方式都需要联网创建,需要等待的时间很长,我一般习惯手动创建。通过创建一个普通的Maven项目自己手动配置得到一个SpringBoot项目。

1.2 手动创建SpringBoot项目

1.2.1 Maven项目的创建

新建项目

 选择Maven,下一步

 只需要修改命名就行

 

       项目创建成功

 1.2.2 手动配置将Maven项目变为SpringBoot项目

pom.xml中添加依赖项

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.2</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>    

编写启动类

package com.ylh;

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

@SpringBootApplication
public class SpringBootDemo4Application {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemo4Application.class);
    }
}

至此,Maven项目成功变成SpringBoot项目

 1.3 概述

SpringBoot是由Pivotal团队提供的全新的框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程

Spring程序的缺点

依赖设置繁琐、配置繁琐

SpringBoot程序的优点

  • 起步依赖【简化配置】

  • 自动配置【简化常用工程相关配置】

  • 辅助功能【内置服务器……】

项目创建总结:

1、开发springboot程序要继承spring-boot-starter-parent

2、spring-boot-starter-parent中定义了很多个依赖管理

3、继承parent模块可以避免多个依赖使用相同技术出现依赖版本冲突

4、继承parent的形式也可以采用引入依赖的形式实现效果

starter

SpringBoot项目中常见的项目名称,定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的

parent

所有SpringBoot项目要继承的项目,定义了若干个坐标的版本号【依赖管理,而非真正的依赖】,以达到减少依赖冲突的目的

spring-boot-starter-parent个版本之间存在着诸多坐标的不同

springboot提供了3中配置文件的格式

- properties【传统的格式/默认的格式】
- yml【主流格式】
- yaml

springboot配置文件的加载顺序

application.properties>application.yml>application.yaml

不同配置文件中相同的配置按照加载的优先级相互覆盖,不同配置文件中不同的配置全部保留

1.4 yaml文件

概述

YAML[Yaml ain't Markup Language]一种数据序列化格式

优点:

- 容易阅读
- 容易与脚本语言交互
- 以数据为核心,重数据轻格式

扩展名

- .yml【主流】
- .yaml

语法规则

- 大小写敏感
- 属性层级关系使用多行描述,每行结尾使用冒号结束
- 使用缩进表示层级关系,同层级左侧对齐,只允许空格【不允许使用tab】
- 属性值前添加空格【属性名与属性名之间使用冒号+空格作为分隔】

字面值表示方式

boolean: True  # True true False FALSE false均可
float: 12.23
int: 123 
null: ~   # 使用~表示null
string: Helloword
string1: "Helloworld"  # 字符串可以直接书写,也可以使用双引号引起来
date: "2023-05-27"
datetime: 2023-05-27T11:46:23+08:00  # 时间和日期使用T连接,最后使用+代表时区


# 数组表示方式:在属性名书写位置的下方使用减号作为数据开始的符号,每行书写一个数据,减号与数据间空格分隔
students:
  - 小明
  - 小红
  
student:
  name: 袁~
  age: 18
  subject:
    - java
    - web
    - javaEE
    
hobbys: [ 唱歌,跳舞 ]   # 数组书写的缩略格式

读取单一数据

province: 陕西
city: 西安

student:
  name: 袁李慧
  age: 21

school:
  - 西交
  - 西电
     
package com.ylh.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/users")
public class UserController {

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

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

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

    @Value("${student.age}")
    private int age;

    @Value("${school[1]}")
    private String school;

    @GetMapping
    public String hello(){
        System.out.println(province);
        System.out.println(city);
        System.out.println(name);
        System.out.println(age);
        System.out.println(school);
        return "hello springboot is running"+province+"=="+city;
    }
}

使用@Value读取单个数据,属性名引用方式:¥{以及属性名.二级属性名……}

//使用自动装配将所有的数据封装到一个Environment对象中
@Autowired
private Environment env;

@GetMapping("/getData")
public String getYamlData(){
    System.out.println(env);
    System.out.println(env.getProperty("province"));
    System.out.println(env.getProperty("city"));
    System.out.println(env.getProperty("school[2]"));
    System.out.println(env.getProperty("student.name"));
    return "get yaml data is success";
}

使用Environment对象封装全部配置信息

使用@Autowired自动装配数据到Environment对象中

读取引用类型数据

定义yml文件

datasource:
  driver: com.mysql.jdbc.Driver
  url: jdbc:mysql:///test
  username: root
  password: 123mysql

定义实体类

package com.ylh.util;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "datasource")
public class MyDataSource {
    private String driver;
    private String url;
    private String username;
    private String password;

    public String getDriver() {
        return driver;
    }

    public void setDriver(String driver) {
        this.driver = driver;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "MyDataSource{" +
                "driver='" + driver + '\'' +
                ", url='" + url + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

@Controller

@Autowired
private MyDataSource dataSource;

@GetMapping("/ds")
public String getDataSource() {
    System.out.println(dataSource);
    return dataSource.toString();
}

使用@ConfigurationProperties注解绑定配置信息到封装类中

封装类需要定义为spring管理的bean,否则无法进行属性注入

1.5 整合第三方技术

1.5.1 整合Junit

引入依赖——导入对应的starter

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>

在测试类上使用@SpringBootTest注解修饰

package com.ylh;
​
import org.springframework.boot.test.context.SpringBootTest;
​
@SpringBootTest
public class SpringBootDemo4Test {
    public void testUser(){
​
    }
}

使用自动装配的形式添加要测试的对象

1.5.2 整合mybatis

引入依赖——导入对应的starter

<!--导入对应的starter MaBatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
​
<!--导入数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

设置数据源的参数

#配置数据源信息
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql:///springboot_db
    username: root
    password: 123mysql

测试类

package com.ylh;
​
import com.ylh.dao.StuDao;
import com.ylh.pojo.Student;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
​
@SpringBootTest
public class SpringBootDemo2Test {
​
    @Autowired
    private StuDao stuDao;
​
    @Test
    public void testStuById(){
        Student stuById = stuDao.findStuById(1);
        System.out.println(stuById);
    }
}

Tips:

MyBatis8.x驱动要求设置时区

a.url后边添加serverTime设定Asia/ShangHai或者使用UTC

如果是映射配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
​
<mapper namespace="com.ylh.dao.StuMapper">
    <!--查询-->
    <select id="findAll" resultType="Stu">
        select * from stu
    </select>
</mapper>
mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml  # mapper映射文件路径
  type-aliases-package: com.ylh.pojo  # 配置是哪个包下的类的默认的别名

1.5.3 整合Mybatis_Plus

1.导入坐标

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3</version>  <!--这里必须写版本, 因为mybatis_plus未收录在boot中-->
</dependency>

2.创建Dao接口

继承BaseMapper,泛型就是封装数据的实体类,该接口中常用的CRUD方法已经写好了,直接用

@Mapper
public interface StuDao extends
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值