自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

原创 SSM(Spring + Spring MVC + Mybatis)整合

目录一、整合策略二、Mybatis 整合 Spring1、整合目标2、整合所需 Jar 分析3、整合后的 pom 坐标4、jdbc.properties5、Spring 配置文件1)applicationContext-dao.xml2)applicationContext-service.xml3)AccountMapper 接口4)AccountMapper.xml5)测试程序三、整合 Spring MVC1、整合思路2、引入 pom 坐标3、添加 Spring MVC 入⻔案例1)springmvc.

2022-04-09 12:00:00 192

原创 Spring MVC 源码刨析

目录一、刨析前准备1、前端控制器 DispatcherServlet 继承结构2、重要时机点分析1)Handler 方法的执行时机2)⻚面渲染时机(打断点并观察调用栈)3、Spring MVC 处理请求的流程4、DispatcherServlet 类中的方法 doDispatch 源码二、源码跟踪刨析1、核心步骤 getHandler 方法剖析2、核心步骤 getHandlerAdapter 方法剖析3、核心步骤 ha.handle 方法剖析1)入口2)根据断点,跟踪源码4、核心步骤 processDisp

2022-04-08 12:00:00 324

原创 Spring MVC 高级技术之异常处理和重定向 Flash 属性

目录1、在控制器中处理异常2、基于 Flash 属性的跨重定向请求数据传递1、在控制器中处理异常import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.servlet.ModelAndView;import javax.servlet.h

2022-04-07 12:00:00 196

原创 Spring MVC 高级技术之拦截器(Inteceptor)

目录一、监听器、过滤器和拦截器对比1、Servlet2、过滤器(Filter)3、监听器(Listener)4、拦截器(Interceptor)二、拦截器的执行流程三、多个拦截器的执行流程四、示例代码1、自定义 Spring MVC 拦截器2、注册 Spring MVC 拦截器一、监听器、过滤器和拦截器对比1、Servlet处理 Request 请求和 Response 响应。2、过滤器(Filter)对 Request 请求起到过滤的作用,作用在 Servlet 之前,如果配置为 /* 可以对所

2022-04-06 12:00:00 260

原创 Spring MVC 与 Ajax Json 交互

目录一、Ajax Json 交互相关概念1、什么是交互?1)前端到后台2)后台到前端2、什么是 Json?3、@ResponseBody 注解二、在 Spring MVC 中使用 json 交互1、所需 jar 包2、前端 jsp ⻚面及 js 代码3、后台 Handler 方法一、Ajax Json 交互相关概念1、什么是交互?交互:两个方向。1)前端到后台前端 ajax 发送 json 格式字符串,后台直接接收为 pojo 参数,使用注解 @RequstBody。2)后台到前端后台直接返回

2022-04-05 12:00:00 343

原创 Spring MVC 高级技术之文件上传(multipart)

目录1、所需 jar 包2、配置文件上传解析器3、前端 Form4、后台接收 Handler文件上传,即处理 multipart 形式的数据。原生 servlet 处理上传的文件数据的,springmvc 又是对 serlvet 的封装。1、所需 jar 包<!-- 文件上传所需 jar 坐标 --><dependency> <groupId>commons-fileupload</groupId> <artifactId>com

2022-04-05 12:00:00 384

原创 Spring MVC 与 Restful 风格

目录一、Restful 相关概念1、什么是 Restful?2、什么是 REST?3、Restful 的优点4、Restful 的特性1)资源(Resources)2)表现层(Representation)3)状态转化(State Transfer)5、Restful 的示例1)没有 rest 的话,原有的 url 设计:2)有了 rest ⻛格之后。3)锁定资源之后如何操作它呢?常规操作就是增删改查。6、URL7、Restful ⻛格 URL8、Restful ⻛格资源操作9、Restful ⻛格资源表述

2022-04-04 12:00:00 492

原创 Spring MVC 基础概念

目录一、MVC 体系结构1、MVC 三层架构1)表现层2)业务层3)持久层2、MVC 设计模式3、什么是 Spring MVC ?二、Spring Web MVC 工作流程1、开发过程2、Spring MVC 请求处理流程3、Spring MVC 九大组件1)HandlerMapping(处理器映射器)2)HandlerAdapter(处理器适配器)3)HandlerExceptionResolver4)ViewResolver5)RequestToViewNameTranslator6)LocaleRes

2022-04-03 13:08:04 1110 2

原创 Spring MVC 快速入门

目录一、简单框架搭建与应用1、导入依赖2、springmvc.xml 配置3、Controller 类4、web.xml 配置5、handler.jsp 页面6、maven 集成 tomcat 服务器二、请求参数绑定(Spring MVC 如何接收请求参数)1、请求参数绑定原理2、默认支持 Servlet API 作为方法参数3、绑定简单类型参数4、绑定 Pojo 类型参数5、绑定 Pojo 包装对象参数1)包装类型 QueryVo2)Handler 方法6、绑定日期类型参数(需要配置自定义类型转换器)1)

2022-04-03 11:57:36 274

原创 mybatis 源码刨析扩展之 二级缓存

目录一、复习一下二级缓存内容1、启动二级缓存1)开启全局二级缓存配置2)在需要使用二级缓存的 Mapper 配置文件中配置标签3)在具体 CURD 标签上配置 useCache=true二、源码刨析1、配置初始化,标签 的解析1)XMLConfigBuilder2)我们来看看解析 Mapper.xml3)看看是如何构建 Cache 对象的4)buildStatementFromContext(context.evalNodes("select|insert|update|delete")); 将 Cach

2022-01-26 12:00:00 283

原创 Spring AOP 源码刨析

目录一、源码前准备1、AOP 基础用例准备1)Bean 定义2)Aspect 定义3)测试类 用例4)源码时机点分析二、代理对象创建流程1、AbstractAutowireCapableBeanFactory#initializeBean2。AbstractAutowireCapableBeanFactory#applyBeanPostProcessorsAfterInitialization3、创建代理对象的后置处理器 AbstractAutoProxyCreator#postProcessAfterIn

2022-01-25 12:00:00 213

原创 Spring IoC 源码刨析扩展之 循环依赖与三级缓存

目录一、循环依赖相关定义1、什么是循环依赖?2、Spring 中循环依赖场景有哪些?二、循环依赖处理机制1、有哪些条件下不支持处理?2、prototype 原型 bean 的循环依赖无法支持处理原因1)事先判断排除2)原型 bean 在创建完成之后不会保存在容器当中总结:Spring 不支持原型 bean 的循环依赖。3、单例 bean 循环依赖的处理机制三、源码刨析,三级缓存1、三级缓存有哪些?2、循环依赖时,源码跟踪三级缓存1)源码跟踪前准备2)源码跟踪一、循环依赖相关定义1、什么是循环依赖?循环

2022-01-25 12:00:00 256

原创 事务相关概念

目录一、事务的分类1、编程式事务2、声明式事务二、事务的概念三、事务的四大特性1、原子性(Atomicity)2、一致性(Consistency)3、隔离性(Isolation)4、持久性(Durability)四、事务的隔离级别1、事务并发问题脏读:不可重复读:虚读(幻读):2、数据库共定义了四种隔离级别:Serializable(串行化):Repeatable read(可重复读):Read committed(读已提交):Read uncommitted(读未提交):五、事务的传播行为一、事务的分类

2022-01-24 12:00:00 106

原创 Spring 中的事务相关

目录一、相关接口1、具体类 PlatformTransactionManager (包 spring-tx 中)2、作用二、相关事务配置1、纯 xml 模式1)导入 jar 依赖2)xml 配置2、基于 XML + 注解1)xml 配置2)在接口、类或者方法上添加 @Transactional 注解3、基于纯注解一、相关接口1、具体类 PlatformTransactionManager (包 spring-tx 中)public interface PlatformTransactionManage

2022-01-24 12:00:00 216

原创 Spring AOP 快速入门使用

目录一、Spring 中 AOP 的配置方式二、XML 配置模式1、导入依赖2、aop 核心配置3、核心配置细节1)关于切入点表达式2)改变代理方式的配置3)五种通知类型4)特别说明三、XML + 注解模式1、XML 中开启 Spring 对注解 AOP 的支持2、示例四、注解模式1、注解一、Spring 中 AOP 的配置方式在 Spring 的 AOP 配置中,也和 IoC 配置一样,支持3类配置方式。第一类:使用 XML 配置;第二类:使用 XML + 注解组合配置;第三类:使用纯注解配置。

2022-01-23 12:00:00 181

原创 Spring AOP 基础概念

目录一、AOP 相关概念1、什么是 AOP?2、AOP在解决什么问题?3、为什么叫做面向切面编程?二、Spring AOP 相关概念1、AOP本质:2、AOP 术语:3、Spring 中 AOP 的代理选择:一、AOP 相关概念1、什么是 AOP?AOP:Aspect oriented Programming 面向切面编程/面向方面编程。AOP 是 OOP 的延续,从 OOP 说起。OOP:Object Oriented Programming 面向对象程序设计。OOP 三大特征:封装、继承和多

2022-01-23 12:00:00 153

原创 Spring IoC 扩展特性

目录一、lazy-init 延迟加载1、定义1)原本默认的配置2)延迟加载的配置3)全局配置4)注意事项2、应用场景二、FactoryBean 和 BeanFactory1、BeanFactory2、FactoryBean例子:三、后置处理器1、两者区别2、BeanPostProcessor3、BeanFactoryPostProcessor一、lazy-init 延迟加载1、定义1)原本默认的配置<bean id="testBean" class="cn.lagou.LazyBean"/&g

2022-01-22 12:00:00 178

原创 Spring IoC 源码刨析

目录一、源码前准备1、刨析源码的好处2、源码刨析原则1)定焦原则2)宏观原则3、读源码的方法和技巧1)断点2)反调3)经验4、Spring 源码构建5、Spring IoC 容器体系6、Bean 生命周期关键时机点1)LagouBean 类2)BeanPostProcessor 接口实现类3)BeanFactoryPostProcessor 接口实现类4)applicationContext.xml5)IoC 容器源码分析用例6)分析调用情况7、Spring IoC 容器初始化主流程二、BeanFactor

2022-01-22 12:00:00 209

原创 Spring IoC 快速使用入门

目录一、启动 IoC 容器的方式:1、Java 环境下启动 IoC 容器:2、Web 环境下启动 IoC 容器:1)从 xml 启动容器;2)从配置类启动容器二、纯 xml 模式1、bean 对象的创建2、对象属性的依赖注入配置三、xml 与注解相结合模式1、注意2、xml 中标签与注解的对应(IoC)3、DI 依赖注入的注解实现方式1)@Autowired (推荐使用)2)@Resource3)注意:四、纯注解模式一、启动 IoC 容器的方式:1、Java 环境下启动 IoC 容器:ClassPa

2022-01-21 12:00:00 127

原创 Spring IoC 基础概念

目录一、IoC 相关概念1、什么是 IoC?2、为什么叫做控制反转?3、IoC 解决了什么问题?4、IoC 和 DI 的区别二、Spring IoC 基础概念1、 BeanFactory 与 ApplicationContext 区别:2、Bean 的 X 及生命周期1)作用范围的改变2)不同作用范围的生命周期3、Bean 标签属性1)id 属性:2)class 属性:3)name 属性:4)factory-bean 属性:5)factory-method 属性:6)scope 属性:7)init-meth

2022-01-21 12:00:00 755

原创 Spring 相关基础概念

目录一、Spring 简介二、Spring 优势1、方便解耦,简化开发2、AOP 编程的支持3、声明式事务的支持4、方便程序的测试5、方便集成各种优秀框架6、降低 JavaEE API 的使用难度7、源码是经典的 Java 学习范例三、Spring 的核心结构1、Spring 核心容器(Core Container)2、面向切面编程(AOP / Aspects)3、数据访问与集成(Data Access / Integration)4、Web5、Test一、Spring 简介Spring 是分层的 fu

2022-01-20 16:40:35 322

原创 mybatis 源码刨析扩展之 动态SQL

目录一、执行原理二、主要类源码1、SqlNode 接口2、SqlSource3、BoundSql 类4、BaseBuilder 接口及其实现类1)XMLConfigBuilder2)XMLMapperBuilder3)XMLStatementBuilder4)XMLScriptBuilder三、源码刨析1、 XMLMapperBuilder 中的 parse 方法:2、XMLStatementBuilder 的解析:3、 XMLLanguageDriver(LanguageDriver实现类)中的 crea

2022-01-20 16:07:46 884

原创 mybatis 源码刨析扩展之 延迟加载

目录一、什么是延迟加载1、延迟加载的定义2、优缺点1)优点:2)缺点:3、什么时候用到4、注意:延迟加载是基于嵌套查询来实现的。二、怎样实现1、局部延迟加载2、全局延迟加载3、设置触发延迟加载的方法三、延迟加载原理1、理解描述2、相关代码类四、查看刨析源码1、DefaultResultSetHandler2、JavasisstProxyFactory 实现五、注意事项1、IDEA 调试问题一、什么是延迟加载在开发过程中很多时候我们并不需要总是在加载用户信息时就一定要加载他的订单信息。此时就是我们所说的延

2022-01-19 23:05:19 308

原创 mybatis 动态 sql 相关整理总结

目录一、关键字标签二、条件查询三、循环执行 sql 的拼接操作四、sql 片段抽取五、在注解中使用动态 sql六、insert 插入语句返回 主键值我们根据实体类的不同取值,使用不同的 sql 语句来进行查询,所以需要动态的合成 sql 语句。一、关键字标签<trim>: 格式化标签。<where>: 代表 sql 条件关键字 where。<set>: 代表 sql update 更新字段关键字 set。<!--动态Sql: trim 标签-->

2022-01-19 20:46:28 525

原创 mybatis 架构原理 和 源码刨析

目录一、mybatis 架构原理1、架构设计1)API 接口层:2)数据处理层:3)基础支撑层:2、主要构件及其相互关系3、总体流程1)加载配置并初始化2)接收调用请求3)处理操作请求4)返回处理结果二、Mybatis 源码刨析1、配置初始化分析1)初始化测试代码片段2)进入源码分析,从 SqlSessionFactoryBuilder 的 build 方法开始3)配置文件解析 Configuration4)介绍 MappedStatement5)结束,返回2、调用 SqlSession,执行 SQL 语句

2021-09-18 17:30:36 143

原创 mybatis 插件

目录一、mybatis 插件介绍二、mybatis 插件原理1、创建2、拦截1)首先是 ParameterHandler 的创建,在 Configuration 类当中:2)interceptorChain 保存了所有的拦截器(interceptors),是 mybatis 初始化的时候创建的。3、应用1)类相关代码2)插件配置,在 sqlMapConfig.xml 中三、自定义插件1、插件接口2、自定义插件1)相关类代码2)相关配置 sqlMapConfig.xml3)mapper 接口4)mapper.

2021-09-18 16:05:48 7034

原创 mybatis 缓存

目录一、一级缓存1、简单了解一级缓存1)能用到一级缓存的例子:2)不能用到一级缓存的例子3)总结2、源码结构3、源码追踪分析1)缓存创建2)缓存运用二、二级缓存1、二级缓存含义2、开启二级缓存3、注意:4、测试5、useCache 和 flushCache1)useCache2)flushCache三、二级缓存整合 redis1、导入依赖。2、mapper 配置文件,UserMapper.xml3、redis 配置,redis.properties4、代码测试5、源码分析一、一级缓存1、简单了解一级缓存

2021-09-18 11:58:39 83

原创 mybatis 一对一,一对多,多对多映射开发

目录一、一对一映射查询1、实体类2、mapper接口,OrderMapper3、mapper配置,OrderMapper.xml4、使用注解配置 mapper5、结果测试二、一对多映射查询1、实体类2、mapper接口,UserMapper3、mapper配置,UserMapper.xml4、使用注解配置 mapper5、结果测试三、多对多映射开发1、实体类2、添加mapper接口方法,UserMapper3、mapper配置,UserMapper.xml4、使用注解配置 mapper5、结果测试一、一对

2021-09-18 10:28:31 385

原创 mybatis 相关基础概念

目录一、mybatis基础概念1、对象/关系数据库映射 (ORM)2、mybatis 简介二、mybatis 配置目录1、myBatis 的映射文件概述2、myBatis 核心配置文件层级关系3、MyBatis常用配置解析1)environments标签2)mapper标签3)Properties 标签4)typeAliases 标签4、mybatis 相应 API 介绍1)SqlSessionFactoryBuilder2)SqlSessionFactory3)SqlSession5、mybatis 注解

2021-09-17 21:12:55 447

原创 mybatis 简单快速入门

目录一、mybatis 简单搭建运用,以查询为例1、项目,导入依赖2、数据库,创建数据表,user3、代码,编写 java 实体类 User4、编写 mapper 映射文件,UserMapper.xml5、编写 MyBatis 核心配置文件,SqlMapConfig.xml6、编写测试代码7、代理开发方式(Mapper 接口开发)1)mapper 接口开发,UserMapper2)测试代理方式8、注解开发方式1)注解代码 Mapper 接口:2)测试代码与上方代理接口代码相同,略。二、mybatis 的其他

2021-09-15 23:57:51 85

原创 Quartz定时任务

目录这里只有简单熟悉操作,想详细学习的话请转其他博客,比如https://blog.csdn.net/noaman_wgs/article/details/80984873例子:1、引入框架<!--任务调度框架quartz--><!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -- ><dependency> <groupId>org.quartz-sched

2021-04-21 15:10:01 71

原创 jdk 定时任务

目录TimerScheduledExecutorServiceTimer详情请见:https://blog.csdn.net/xianpinjin4752/article/details/80033379简单使用看例子:package com.demo;import javax.naming.Name;import java.util.Date;import java.util.TimeZone;import java.util.Timer;import java.util.Timer

2021-04-21 14:31:42 338

原创 Mac下IDEA快捷键整理

目录常用快捷键整理注:按住Fn按钮,会出现F1 ~ F12 按钮常用java代码自动联想常用快捷键整理快捷键介绍说明Option + Return根据光标处所在的问题,提供快速修复选择,光标放在的位置不同提示的结果也不同(万能修复快捷键,同时可以帮助我们生成本地变量==eclipse中的ctrl+1)注意:非个人编码问题导致的错误,都可以尝试使用该快捷键修复Control + Return代码自动生成,如生成对象的 set / get 方法,构造函数,toString()

2021-01-16 21:39:42 190

原创 Adapter适配器模式

目录适配器定义示例适配器定义适配器使得原本由于接口不兼容而不能一起工作、不能统一管理的那些类可以一起工作、可以进行统一管理。解决接口不兼容而不能一起工作问题,看下面一个非常经典的案例。示例在中国,⺠用电都是220v交流电,但是手机锂电池用的都是5v直流电。因此,我们给手机充电时就需要使用电源适配器来进行转换。使用代码还原这个生活场景 。创建AC220类,表示220v交流电:package com.lagou.edu;import com.sun.org.apache.bcel.intern

2021-01-16 16:15:54 152

原创 模板方法模式

目录模板方法模式示例模板方法模式模板方法模式是指定义一个算法的⻣架,并允许子类为一个或者多个步骤提供实现。使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤,属于行为型设计模式。采用模板方法模式的核心思路是处理某个流程的代码已经具备,但其中某些节点的代码暂时不能确定。此时可以使用模板方法。示例package com.lagou.edu;/** * 面试大厂流程类 */public abstract class Interview { private f

2021-01-16 14:45:17 51

原创 Strategy策略模式

目录策略模式定义结构策略(Strategy)策略实现(ConcreteStrategy)上下文(Context)示例重构前重构后策略模式定义策略模式(Strategy),就是一个问题有多种解决方案,选择其中的一种使用,这种情况下我们 使用策略模式来实现灵活地选择,也能够方便地增加新的解决方案。比如做数学题,一个问题的解法可能有多种;再比如商场的打折促销活动,打折方案也有很多种,有些商品是不参与折扣活动,要按照原价销售,有些商品打8.5折,有些打6折,有些是返现5元等。结构策略(Strategy)

2021-01-16 13:38:29 169

原创 JDK动态代理模式

目录代理模式(Proxy Pattern)1)创建一个抽象类,Person接口,使其拥有一个没有返回值的doSomething方法2)创建一个名为Bob的Person接口的实现类,使其实现doSomething方法3)创建JDK动态代理类,使其实现InvocationHandler接口。拥有一个名为target的变量,并创建 getTarget获取代理对象方法4)创建JDK动态代理测试类JDKDynamicTest代理模式(Proxy Pattern)给某一个对象提供一个代理,并由代理对象控制对原对象的

2021-01-16 11:07:47 109 1

原创 Factory工厂模式

目录Factory模式定义例子:生产电脑1. 创建抽象产品类2. 创建具体产品类3. 创建工厂类4. 客户端调用工厂类Factory模式定义比如:在Mybatis中,SqlSessionFactory使用的就是工厂模式,该工厂没有那么复杂的逻辑,是一个简单工厂模式。简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责

2021-01-16 10:38:58 223 1

原创 Builder构建者模式

目录Builder模式的定义例子1)computer2)ComputerBuilder3)调用Builder模式的定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。它属于创建类模式,一般来说,如果一个对象的构建比较复杂,超出了构造函数所能包含的范围,就可以使用工厂模式和Builder模式,相对于工厂模式会产出一个完整的产品,Builder应用于更加复杂的对象的构建,甚至只会构建产品的一个部分。直白来说,就是使用多个简单的对象一步一步构建成一个复杂的对象例子使用构建者设

2021-01-15 20:26:17 76

原创 Mac下IDEA常用操作整理

目录1、完美卸载2、常用插件3、一些简便的常规设置1)更改字体大小通过ctrl+鼠标滚轮2)代码提示不区分大小写3)修改字体4)修改控制台输出字体5)设置文件编码6)自动导包&优化导包7)设置自动编译8)显示行号和方法分割线4、idea 导出配置1、完美卸载idea如果出现无法正常运行的错误(如破解失效时),则需要我们进行卸载进行重新安装。具体操作,参考:https://blog.csdn.net/qq_17213067/article/details/88226062因为版本原因,除了链接

2021-01-15 18:40:13 811

高仿window XP自带 标准型计算器(java)

本人自学java,早些时闲暇制作高仿xp标准型计算器,为求些积分今日分享

2014-07-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除