代码编织梦想

总结

一、Spring

  1. Ioc容器

    就是将对象的创建放在Ioc容器中,从而可以随处调用

​ 1.1 主要的接口,用于解析配置文件

​ ① BeanFactory接口

​ ② ApplicationContext(面向开发者接口),有两个实现类

​ ClassPathXmlApplicationContext;FileSystemXmlApplicationContext

​ 1.2 xml方式实现

​ ① 通过标签创建对象

​ ② 注入属性

​ set方式、构造器方式、

​ 字面量、级联赋值、集合类属性的注入

​ 1.3 注解方式实现

​ ① 创建对象

​ @Service、@Controller、@Repository、@Component

​ ② 注入属性

​ @Autowire(根据类型识别对象属性)、@Qualifier、@Resource、@Value(普通属性注入)

​ ③ 配置类

​ @Configuration:标志该类为配置类,完全替代xml

​ @ComponentScan(basePackages = {“com.atguigu”}):设置组件扫描路径,路径内标注的组件全部纳 入容器中

  1. Aop动态代理

    作用:在不改变源代码的基础上,进行功能扩展。

​ 2.1 底层原理

​ ① Proxy.newProxyInstance(

​ 第一个参数:新建代理类的类加载器,

​ 第二个参数:被代理的实现类所实现的所有接口的Class数组,

​ 第三个参数:实现了InvocationHandle接口的新建类的对象,对象构造器中传入被代理类

​ )

​ ② 创建实现了nvocationHandle接口的实现类,在该内部写增强方法

​ ③ ①的返回值强转为被代理类类型,此时调用被代理类内部的某个方法,该方法就会被增强。

​ 2.2 在Spring下实现

​ @Aspect:表示该类为动态代理类

​ execution([权限修饰符] [返回类型] [类全路径] [方法名] [参数列表])表达式:表示各类通知可以作用在哪些 类的哪些方法上

  1. 事务处理

​ 3.1 简述

​ 事务是针对数据库的概念。多线程、高并发中的事务也是基于对数据库的操作。

​ 3.2 事务的三种读

​ 脏读:未提交的事务读了未提交事务中的内容

​ 不可重复读:未提交的事务读了已提交事务中的修改的内容

​ 幻读:未提交的事务读了已提交事务中的新增的内容或未读到已提交事务中的删减了的内容

​ 3.3 事务的四种特性(ACID)

​ 原子性、一致性、隔离性、持久性

​ 3.4 编程式事务处理

​ 开启事务、进行业务操作、如果没有异常就提交事务、如果有异常就回滚事务

​ 3.5 声明式事务处理

​ ① 配置事务管理器:表明在哪个数据库上开启事务

​ ② 开启事务注解:

​ ③ 在类或方法上添加@Transactional:表明该类或方法是事务性的

二、SpringMVC

主要针对web请求/响应进行的一系列优化,简化了原生ServletAPI中的繁琐操作

  1. 根据请求路径匹配controller
    // value属性中匹配请求路径的写法支持ant风格
    @RequestMapping(
    	value = {"请求路径1","请求路径2"},
        params = {"请求参数1","请求参数2"},
        headers = {"请求头键值对1","请求头键值对2"},
        method = {RequestMethod.GET}
    )
    
  2. 获取请求参数

    ① 通过controller内的控制方法的形参名与请求中的参数名一致而获取请求参数

    ② @RequestParam( “请求参数名”) 形参名:绑定了请求参数名。

    ③ @RequestHeader:获取请求头参数

    ④ @CookieValue:获取cookie

    ⑤ 通过pojo类获取请求参数

  3. 向域对象中共享数据

    request:使用ModelAndView类进行共享

    session:使用原生ServletAPI中的HttpSession

    application:使用原生ServletAPI中的ServletContext = session.getServletContext ( )

  4. ResultFul路径风格

    PUT/POST/PUT/DELETE都是统一的输入路径,区别只在于html文件中的请求方式

    通过源码分析,PUT/DELETE请求需要通过Post请求发送,在hidden中设置name值为”_method“

  5. 处理视图

    根据返回字符串进行自动匹配

    ① 无前缀:使用Thymeleaf

    ② 前缀为forword:为转发

    ③ 前缀为redirect:为重定向

  6. 响应处理

    6.1 @ResponseBody、

    ​ ① 加入JSON依赖,当向浏览器传输Java对象时,需要先将Java对象转换为JSON对象。

    ​ ② 解决Ajax问题:Ajax使用的是局部刷新技术,因为不是使用转发和重定向技术,只能使用响应

    6.2 RespinseEntity

    ​ 在ResponseEntity类的构造器中,有三个参数,分别是:响应体、响应头、状态码,故通过创建

    ​ ResponseEntity的实例对象可相当于自定义了一个响应报文,从而对对浏览器进行响应

  7. 拦截器
  8. 异常处理

    @ControllerAdvice:将当前类标识为异常处理的组件

    @ExceptionHandler(value = { }):用于设置所标识方法处理的异常

三、MyBatis

主要是操作数据库中的数据

  1. ORM,实现面向接口编程

    Object Relationship Mapping,对象映射关系,从而实现面向接口编程。即接口中的方法无需实现类实现,而是通过映射文件进行实现

    ① Mapper接口的全类名 与 Mapper映射文件中的命名空间一致

    ② Mapper接口中的方法名 与 Mapper映射文件中的id一致

    底层:通过SqlSession调用Mapper映射文件中具体的SQL

  2. 获取参数

    ${ }:字符串拼接

    #{ }:会自动加单引号

  3. 自定义映射:resultMap标签

    解决一对多和多对一中,如何将数据表中的int/varchar字段映射到pojo类中的实体类属性。

  4. 动态SQL

    使用、、、拼接SQL

  5. 缓存

    一级缓存:在sqlSession中

    二级缓存:在sqlSessionFactory中

    可引入第三方缓存

  6. 逆向工程

    自动生成pojo类、Mapper接口和Mapper映射文件,并且可以使用QBC风格进行增删改查。

四、MyBatis-Plus

对MyBatis的增强

  1. 对于单表的CRUD,可以不用创建映射文件,只要使Mapper接口继承BaseMapper即可。

  2. 对于多表查询或复杂的查询,可以在映射文件中构建,同MyBatis一样

  3. 提供了官方的IService接口和ServiceImpl<? extends BaseMapper, T>实现类,只要写对应的接口和实现类分别继承即可。ServiceImpl类中有大量的业务方法。

  4. Wrapper条件构造器,组装where后的筛选条件,其对象可作为参数直接传给BaseMapper类中的方法

  5. 分页插件和乐观锁/悲观锁插件

  6. 可以配置多所数据源,选择从不同的数据源操作数据库

  7. MyBatisX插件,可以配合IDEA快速的构建数据表对应的Mapper及Service文件结构,极大的简化开发。

    通过引入MyBatisX内置的方法,可自动生成映射文件。

五、SpringBoot尚硅谷SpringBoot官方笔记地址

  1. 增加了多种向容器中添加组件的注解,对标Spring中的Ioc容器功能
    注解名称功能
    1@Configuration标注该类为配置类
    2@Bean标注在方法上,通过方法添加组件,
    常用于导入第三包中的组件
    3@Compont添加普通组件
    4@Controller添加控制类组件
    5@Service添加业务层组件
    6@Repository添加持久层组件
    7@Import快速给容器中导入组件
    8@Conditional ( )按照条件进行组件装配
    9@ImportResource()将xml文件中的bean组件添加进入容器
  2. 配置文件

    总体配置,可使用yaml格式(推荐使用)和properties格式,具体配置可参照官方文档中的附录A

    会涉及到两种方式的配置绑定

  3. web工程业务层获取参数
    注解使用场景
    1@PathVariable作用于RestFul风格的请求,标注在对应的方法参数前
    可以获取单个参数,也可以获取所有参数的Map
    2@RequestHeader获取请求头
    3@RequestParam对普通风格请求中参数的获取,即queryString查询字符串
    4@CookieValue有的请求可能没有cookie,会报错
    5@RequestBody只有post请求有请求体
    6@RequestAttribute和@RequestParam用法一样,
    用于获取存在request作用域中的数据
    7@MatrixVariable矩阵变量,在请求路径中使用分号作为数据分割符
    有一个属性pathVar,对应的是@RequestMapping中的路径名
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/N_ZSX/article/details/127957318

SpringBoot总结-爱代码爱编程

SpringBoot总结 1,什么是SpringBoot?2,SpringBoot优点3,SpringBoot创建4,引导类中注解1,@Controller 处理http请求2,引导类的@SpringBootApplication3,@RestController:4.@RequestMapping 配置url映射5.@ConfigurationP

SpringBoot总结之CommandLineRunner-爱代码爱编程

一、引言 应用场景:溪源基于目前业务需求需要提前将部分数据加载到Spring容器中。大家可以想一下解决方案,下面评论去留言或者私信溪源。溪源能够想到的解决方案: 定义静态常量,随着类的生命周期加载而提前加载(这种方式可能对于工作经验较少的伙伴,选择是最多的);实现CommandLineRunner接口;容器启动之后,加载实现类的逻辑资源,已达到完成资源

SpringBoot学习总结-爱代码爱编程

一、SpringBoot概述 1. SpringBoot特点 为基于Spring的开发提供更快的入门体验,并不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式,内部集成了很多的其他框架,并且做好了默认的配置。 2. SpringBoot的核心功能 起步依赖 起步依赖本质上是一个Maven项目对象模型(Project Objec

Springboot 总结:核心功能和优缺点-爱代码爱编程

SpringBoot核心功能 1、独立运行Spring项目 Spring boot 可以以jar包形式独立运行,运行一个Spring Boot项目只需要通过java -jar xx.jar来运行。 2、内嵌servlet容器 Spring Boot可以选择内嵌Tomcat、jetty或者Undertow,这样我们无须以war包形式部署项目。 3、

【springboot】18、内置 tomcat 配置和切换_秃头披风侠.的博客-爱代码爱编程

文章目录 基本介绍Tomcat配置切换其他Web服务总结 基本介绍 SpringBoot 支持的 webServer有: Tomcat, Jetty, or Undertow,我们使用spring-boot-

maven assembly打包生成java应用启动脚本bat和sh_靖节先生的博客-爱代码爱编程

1. maven插件介绍 springboot应用通过maven插件appassembler-maven-plugi生成启动脚本bat和sh。根据官网介绍,这个插件主要用于生成启动 java应用程序的脚本,能将项目依赖ja

立体式校验保护,让你的系统避免 90% 以上的 bug_财高八斗者的博客-爱代码爱编程

1. 概览 在实际开发过程中,数据校验是最为重要的一环,问题数据一旦进入系统,将对系统造成不可估量的损失。轻者,查询时触发空指针异常,导致整个页面不可用;重者,业务逻辑错误,造成流量甚至金钱上的损失。 1.1. 背景 数据校验,天天都在做,但因此而引起的bug也一直没有中断。没有经验的同学精力只定在正常流程,对于边界条件视而不见;有经验的同学,编写大

[杂货铺系列]springboot集成elasticjob遇到的版本不兼容问题_猿why的博客-爱代码爱编程

背景 猿Why昨天在项目工程中引入ElasticJob的时候碰到一个异常: Error starting ApplicationContext. To display the conditions report re-r

springboot总结笔记_楠哥 spring boot笔记-爱代码爱编程

SpringBoot总结笔记 楠哥教你学Java SpringBoot 总结笔记 文章目录 SpringBoot总结笔记SpringBootSpringBoot概述SpringBoot的优点Spr