SSM学习笔记

Spring--------------------------------------------------------

概述

  • Spring是Java EE编程领域的一个轻量级开源框架,由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。
  • 主要技术:
    • Spring Framework
    • Spring Boot
    • Spring cloud
  • 系统架构:

请添加图片描述

核心概念

IoC(Inversion of Control)控制反转

  • 使用对象时,由主动new产生对象转换为由外部提供对象,对象创建控制权由程序转移到外部。

  • Spring提供IoC容器,用来充当Ioc思想中的“外部”,降低代码的耦合度

  • IoC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象统称为Bean

  • 在容器中建立Bean与Bean之间的依赖关系的整个过程,称为DI(Dependency Injection)依赖注入

操作:

  1. 在pom.xml中导入Spring包坐标[外链图片转存失败,源站可能有防盗链机制
    请添加图片描述

  2. 配置对应的Bean

    <bean id="随便取" class="类名"/>
    
  3. 获取IoC容器

    ApplicationContext 容器名 = new ClassPathXmlApplicationContext("配置文件名称");
    
  4. 获取bean

    容器名.getBean("自己取的id名"),再加上接口和转类型即可
    
  5. 删除业务层中使用new的方式创建的对象

  6. 提供对应的set方法

  7. 配置两个bean的关系(DI)

    <bean id="" class ="">
      <property name="" ref=""/>
    <bean/>
    
  • bean实例化

    • bean本质上就是对象,创建bean使用构造方法完成
    • 使用实例工厂
    • 使用静态工厂
  • bean自动装配

    • 在bean装配行后加入autowire=(按类型/按名称/构造方法…)

请添加图片描述

注解开发

  • 定义bean:

    • 在对应的类上面加入@Component(“id”)
    • 在bean配置中扫描组件

请添加图片描述

  • @Component注解的三个衍生注解

    • @Controller:用于表现层bean定义
    • @Service:用于业务层bean定义
    • @Repository:用于数据层bean定义
  • 作用范围:@Scope(“prototype/singleton”)

  • 生命周期:

请添加图片描述

  • 依赖注入:

    • 在类中加入@Autowired

请添加图片描述

  • 指定加载某一个bean@Qualifier(“…”)

XML配置与注解配置:

请添加图片描述

AOP

  • 面向切面编程,知道开发者如何组织程序结构,在不惊动原始设计的基础上为其进行功能增强

  • 例子:
    请添加图片描述
    请添加图片描述

  • 思路流程:

    • 导入坐标

    • 制作连接点方法

    • 制作共性功能

    • 定义切入点: @Pointcut()
      请添加图片描述

    • 绑定切入点与通知关系

  • 工作流程:
    请添加图片描述

事务

  • 在数据层或业务层保障一系列的数据库操作同成功同失败
    请添加图片描述

SpringMVC-------------------------------------------------

概述

  • SpringMVC是一种基于Java实现MVC模型的轻量级Web框架,用于进行表现层功能开发
    请添加图片描述
    请添加图片描述

主要操作

步骤

1.导入SpringMVC坐标与Servlet坐标

请添加图片描述

2.创建SpringMVC控制器类

请添加图片描述

3.初始化SpringMVC环境,设定SpringMVC加载中对应的bean

请添加图片描述

4.初始化Servet容器,加载SpringMVC环境,设置SpringMVC技术处理的请求

请添加图片描述

Postman:Postman是一款网页调试与发送网页HTTP请求的插件,常用于进行接口测试

bean加载控制:SpringMVC相关bean(表现层bean)

  • Spring控制的bean
    • 业务bean(Service)
    • 功能bean(DataSource)

REST

  • 表现形式转换

  • 根据REST风格对资源进行访问称为RESTful

  • 按照REST风格访问资源时使用行为动作区分对资源进行了何种操作
    请添加图片描述

  • 快速开发:

    • 类注解:@RestController=@Controller和@ResponseBody,位于SpringMVC和RESTful开发控制器上方
    • 方法注解:@GetMapping@PostMapping@PutMapping@DeleteMapping,位于SpringMVC和RESTful开发控制器定义上方

拦截器

  • 一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法中的执行

    • 在指定的方法调用前后执行预先设定的代码
    • 阻止原始方法的执行
      请添加图片描述
  • 操作流程:

    1. 声明拦截器的bean,并实现HandlerInterceptor接口

请添加图片描述

  1. 定义配置类,继承WebMVCConfigurationSupport,实现addInterceptor方法

请添加图片描述

  1. 添加拦截器并设定拦截的访问路径,路径可以通过可变参数设置多个

请添加图片描述

  1. 执行流程

请添加图片描述

  1. 执行顺序:

    1. 当配置多个拦截器时,形成拦截器链
    2. 拦截器链的运行顺序参照拦截器添加顺序为准
    3. 当拦截器中出现对原始处理器的拦截,后面的拦截器均终止运行
    4. 当拦截器运行中断,仅运行配置在前面的拦截器的afterCompletion操作

SpringBoot-------------------------------------------------

概述

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

基本操作

创建过程

1.在创建新模块时选择Spring Initializr

请添加图片描述

2.选择当前模块需要使用的技术集

请添加图片描述

3.开发控制器类

请添加图片描述

4.运行

请添加图片描述

  • SpringBoot项目快速启动
    • 前后端分离合作开发:后端人员将项目打成jar包发给前端人员,并且和前端人员连接同一个数据库即可

请添加图片描述

操作步骤:

1.对SpringBoot项目打包(执行Maven构建指令package)

2.执行启动指令:java -jar springboot.jar

注意事项:jar支持命令行启动需要依赖maven插件支持,请确认打包时是否具有SpringBoot对应的maven插件

请添加图片描述

起步依赖

  • starter
    • 定义当前项目使用的所有项目坐标,以达到减少依赖配置的目的
  • parent
    • 所有SpringBoot项目要继承的项目,定义了若干个坐标版本号,以达到减少依赖冲突的目的
  • 实际开发:
    • 使用任意坐标的时候,仅书写GAV中的G和A,V由SpringBoot提供
    • 如发生坐标错误,再指定version

基础配置

格式

  • application.properties

    • server.port=80
  • application.yml

    • server:

      ​ port:80

  • application.yaml

    • server:

      ​ port:82

YAML

  • YAML:一种数据序列化格式
    • 容易阅读
    • 容易与脚本语言交互
    • 以数据为核心,重数据轻格式

请添加图片描述

  • 规则

    • 大小写敏感
    • 层级关系使用多行描述,每行结尾用冒号结束
    • 使用缩进表示层级关系,同级左侧对其,用空格,不用Tab
    • 属性值前面加空格
    • #表示注释
  • 数据读取方式

1.读取单个对象

请添加图片描述

2.封装全部数据到Environment对象

请添加图片描述

3.自定义对象封装指定数据

请添加图片描述

多环境开发配置

  • 多环境启动

请添加图片描述

  • properties文件多环境启动

请添加图片描述

  • 配置文件分类
    • file :config/application.yml 一级
    • file :application.yml 二级
    • classpsth :config/application.yml 三级
    • classpath :application.yml 四级
      • 一级与二级留做系统打包后设置通用属性
      • 三集与四级用于系统开发阶段设置通用属性

MyBatisPlus------------------------------------------------

概述

  • MyBatisPlus是基于MaBatis框架基础上开发的增强型工具,可以简化开发,提高效率

基础操作

操作步骤

1.创建模块

2.选择当前模块需要使用的技术集

3.手动添加mp起步依赖

请添加图片描述

4.设置JDBC操作

请添加图片描述

5.制作实体类与表结构(类名与表名对应,属性名与字段名对应)

6.定义数据接口,继承BaseMapper< user >

请添加图片描述

7.测试类中注入dao接口,测试功能

请添加图片描述

标准数据层CRUD

请添加图片描述

  • Lombok,一个Java类库,提供了一组注解,简化POJO实体类开发

请添加图片描述

  • 分页查询具体步骤:

1.设置分页拦截器作为Spring管理的bean

请添加图片描述

2.执行分页查询

请添加图片描述

  • 条件查询:

1.常规格式

请添加图片描述

2.链式编程格式

请添加图片描述

3.null值处理

请添加图片描述

  • 查询投影:

1.查询结果包含模型类中部分属性

请添加图片描述

2.查询结果包含模型类中未定义的属性

请添加图片描述

  • 字段映射与表名映射:

    • @TableField
      • 属性注解
      • 位于模型类属性定义上方
      • 相关属性
        • value:设置数据库表字段名称
        • exist:设置属性在数据库字段中是否存在,默认为true
  • 多记录操作

1.按照主键删除多条记录

List<long> ids=Arrays.asList(new Long[]{2,3});
userDao.deleteBatchIds(ids);

2.根据主键查询多条记录

List<long> ids=Arrays.asList(new Long[]{2,3});
List<Users> userList =userDap.selectBatchIds(ids);
  • 逻辑删除

1.数据库表中添加逻辑删除标记字段

2.实体类中添加对应字段,并设定当前字段为逻辑删除标记字段

请添加图片描述

3.配置逻辑删除字面值

请添加图片描述

乐观锁

1.数据库表中添加锁标记字段

2.实体类中添加对应字段,并设定当前字段为逻辑删除标记字段

请添加图片描述

4.使用乐观锁机制在修改前必须先获取到对应数据的version方可正常进行

请添加图片描述

学习中遇到的问题及解决--------------------------------

  • 代码经检查没问题却报错或者异常

    • 在做完一次操作后,应当在右侧Maven栏目刷新一下再运行
  • idea快捷键

    • sout+enter:System.out.println();
    • main+Enter:public static void main(String[] args) {}
    • Alt+Insert:生成构造函数等
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值