SpringBoot回看

一、入门案例(四种方式创建Boot工程)

  • IDEA 版本:直接选中创建即可,默认会连接到 spring.io 上去创建
    • Group、Artifact、Version :Maven 工程的GAV 坐标
    • Name、Description:项目名称和描述,会出现在pom文件中
    • Package:默认创建的包
  • 使用Spring官网生成并导入 https://start.spring.io
  • 使用阿里云提供的服务器 http://start.aliyun.com (同样使用IDEA 来创建但是将server Url 改为阿里云即可)
  • 手工创建(已经使用过SpringBoot的情况下):
    • pom文件:添加 parent 继承Spring-boot-starter-parent 、导入spring-boot-starter-web 依赖
    • application:@SpringBootApplication 、 定义main 方法 执行 SpringApplication.run(类名.class , args)

忽略SpringBoot 项目默认创建的文件:

​ Settings -> Editor -> File Types - > Ignored Files and Foldrs

二、解析

简介

SringBoot 就是 Pivotal 团队设计出来用于简化Spring 应用的初始搭建开发过程

  1. 简化依赖配置
  2. 常用工程自动配置
  3. 辅助功能

parent

SpringBoot 程序需要继承 spring-boot-starter-parent 才能够运行

  1. parent 中又继承了一个 spring-boot-dependencies
    • 这个pom将很多依赖都配置到了一个 dependencyManagement 中
    • 为我们做好了依赖管理,避免了依赖版本冲突
    • 还可以直接导入spring-boot-dependencies 这个依赖来实现

dependencyManagement:用来做依赖管理的 这里配置的依赖不会直接被导入,而是记录好每一个依赖,用于版本管理,当一个项目中导入依赖但是没有指定Version的时候如果 dependencyManagement里面记录了这个依赖,就会使用dependencyManagement中定义的版本,否则报错。

选中多个文件 -》 右键 compare files 可以对比两个文件的不同

开发模式:

  1. 定义一系列常用的坐标版本
  2. 定义常用坐标组合
  3. 使用组合

starter

一个starter 中定义了若干个用于实现该功能的依赖引入了一个starter就引入了这些依赖

引导类

  • 引导类是Boot工程的执行入口,运行main方法就可以启动项目。

  • Boot 工程运行后初始化Spring容器,

  • @SpringBootApplication 中被没有指定包的 @ComponentScan 标记

@ComponentScan 如果没有指定包,默认就是当前类所在包及其子包

辅助功能(内嵌Tomcat)

  • 内嵌Tomcat 的原理就是将Tomcat服务器作为对象运行,并将该对象交给Spring容器管理
  • 变更内嵌服务器:排除默认的tomcat GA,导入新的服务器GA即可

SpringBoot默认支持三款服务器:tomcat、jetty、undertow

<--! 排除依赖 -->
<exclusions>
	<exclusion>	
		<group></group>
		<aritfactId></aritfactId>
​	</exclusion>
 </exclusions>

三、配置

  • 配置文件类型和优先级
    • properties、yml、yaml
  • 属性提示消失问题解决
    • Project Structure -》 Facets -》 找到右边的图标进行添加
  • yaml文件
    • 语法规则 (大小写敏感)
      • [ {…} , {…} ]
    • 数据的读取 ( ${一级属性 . 二级属性} … 数组使用 [ ] 即可 ) @Value 来注入 SpEl
        1. 读取所有的属性信息 ( 使用 Environment 对象 标注 @Automated 来获取所有配置 ,env.getProperty( " 属性名 ") 获取单个 )
        2. 引用类型数据封装(通常用作配置文件)
          1. yaml中定义好这段配置
          2. 定义好用于封装获取配置信息的实体类(属性名要和yaml中的配置key 对应)
          3. 使用注解 @ConfigurationProperties( prefix=” xxx “ ) 来关联到yaml中的一个对象
          4. 将该实体类 @Component() 注入到Spring 容器中才能正确的被属性注入
    • yaml 文件内部变量引用(同样使用SpEL、使用 ” “ 包裹起来的字符中的转义字符可以生效 )
    • SpringBoot 中yaml 配置文件其实就是将 所有的配置都写成不同的对象,使用的时候直接将他分发到不同的配置类中

四、整合第三方技术

Junit

  1. 导入对应的starter

  2. 测试类使用 @SpringBootTest 修饰被测试的类

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

  4. 测试类如果存在于引导类所在包或子包中,则无需指定引导类,否则通过classes属性指定

    @SpringBootTest(classes=Application.class)
    

Mybatis

  1. 导入对应坐标(mybatis、mysqlDriver)
  2. 数据源参数设置
  3. 使用注解配置mybatis中的mapper,添加@Mapper被容器识别到

时区问题:serverTimezone=UTC

驱动过时问题:com.mysql.cj.jdbc.Driver

Mybatis-Plus

  1. 导入对应坐标(mybatis-plus(手动添加)、mysqlDriver)
  2. 数据源参数设置
  3. 使用注解配置mybatis中的mapper,添加@Mapper被容器识别到

Druid

  1. 导入对应坐标(mybatis-plus(手动添加)、mysqlDriver)

  2. 数据源参数设置

    1. 导入坐标就可以使用的通用数据源配置方法

      spring:
        datasource:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/mybatis_test
          username: root
          password: 2580
          type: org.springframework.jdbc.datasource.DriverManagerDataSource
      
    2. 导入 druid-spring-boot-starter才可以使用的专用方法

      spring:
        datasource:
          druid:
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://localhost:3306/mybatis_test
            username: root
            password: 2580
      

SSMP

增删改查

分页:

  1. IPage 核心功能对象,封装了分页操作所有的数据

    IPage iPage = new Page(1,3);
    bookDao.selectPage(iPage, null);
    System.out.println(iPage.getRecords());
    System.out.println(iPage.getCurrent());
    System.out.println(iPage.getPages());
    System.out.println(iPage.getSize());
    System.out.println(iPage.getTotal());
    
  2. Mybatis拦截器(MybatisPlusInterceptor) 分页操作是在常规操作的基础上增强的,内部动态的拼接sql,所以就需要使用一个拦截器实现

    @Configuration
    public class MPConfig {
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor(){
            MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
            mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
            return mybatisPlusInterceptor;
        }
    }
    

Service 快速开发(MP)

  1. dao层继承 BaseMapper< pojo>

    @Mapper
    public interface BookDao extends BaseMapper<Book> {
    
    }
    
  2. service 继承 IServiceM< pojo>

    public interface IBookService extends IService<Book> {
    }
    
  3. serviceImpl 继承 ServiceImpl<dao, pojo> 实现 service

    @Service
    public class IBookServiceImpl extends ServiceImpl<BookDao, Book> implements IBookService {
    }
    

image-20211126120724165

如果需要自定义业务,按照传统开发即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值