- 博客(14)
- 资源 (5)
- 收藏
- 关注
原创 RabbitMQ可靠消息投递
一、RabbitMQ实战系列一1.1消息的可靠投递1.2消息持久化1.3消息确认机制之消息的准确发布1.4消息确认机制之消息的正确消费
2021-06-30 16:01:18 388
原创 Java反射
一、反射概念反射:框架设计的灵魂框架:半成品软件。可以在框架的基础上进行软件开发,简化编码反射:将类的各个组成部分封装为其他对象,这就是反射机制好处∶1.可以在程序运行过程中,操作这些对象。2.可以解耦,提高程序的可扩展行。Java代码 在计算机中经历的阶段:三个阶段二、反射获取Class对象的三种方式获取class对象的方式:1.Class.forName("全类名"):将字节码文件加载进内存,返回class对象。* 多用于配置文件,将类名定义在配置文件.
2021-06-25 10:13:14 188
原创 Java代码块解析
前言在学习java过程中,有一个关键的知识点是绕不开的,那就是:类中成员的加载顺序。本文主要讲解的是静态代码块、构造代码块及构造方法的加载顺序。概念构造代码块:定义在类的成员位置上,使用"{}"括起来的代码。静态代码块:定义在类的成员位置上,使用"{}"括起来的代码,只是多了一个static修饰。构造方法:这个不多说了,码农们都知道。案例public class SuperTest { static { System.out.println("Supe
2021-06-24 18:00:38 360
原创 Spring MVC源码分析
一、SpringMVC请求处理流程在阅读源码之前先进行SpringMVC源码环境的搭建SpringMVC环境搭建里面也对Controller控制器的几种实现方式,进行了简单说明,便于我们后续的理解。下面也给一张流程图,方便我们进行梳理。DispatcherServlet:DispatcherServlet是SpringMVC中的前端控制器,负责接收request并将request转发给对应的处理组件。HandlerMapping:HanlerMapping是SpringMVC.
2021-06-13 15:17:28 5166 1
原创 Controller控制器实现的三种方式
一、搭建Web环境搭建Servlet环境、搭建Spring MVC环境具体搭建过程,参加上述过程,先Servlet后MVC1.1 pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s.
2021-06-13 14:29:07 1402
原创 Spring编程式事务源码分析
一、前言在Spring中,事务有两种实现方式:编程式事务管理:编程式事务管理使用TransactionTemplate可实现更细粒度的事务控制。 声明式事务管理:基于Spring AOP实现。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务管理不需要入侵代码,通过@Transactional就可以进行事务操作,更快捷而且简单(尤其是配合springboot自动配置,可以说是精简至极!),且大部分业务都可以...
2021-06-08 19:54:43 417 2
原创 从源码剖析Spring事务失效问题
1.Bean是否是代理对象2.入口函数是否是public的3.数据库是否支持事务(Mysql的Mvlsam不支持事务),行锁才支持事务4.切点是否配置正确5.内部方法间调用导致事务失效因为this不是代理对象,可以配置 expose-proxy="true",就可以通过AopContext.currentProxy0)获取到当前类的代理对象。<! -- expose-proxy="true”类内部可以获取到当前类的代理对象--><aop: aspectj-aut.
2021-06-06 16:39:36 354 1
原创 Spring事务源码分析
一、搭建Spring源码环境1.1 声明式事务plugins { id 'java'}group 'org.springframework'version '5.0.21.BUILD-SNAPSHOT'sourceCompatibility = 1.8repositories { mavenCentral()}dependencies { compile project(':spring-context') compile project('
2021-06-05 22:20:00 668 2
原创 Spring事务分析
一、Spring事务1.1 数据库事务特性1.2 事务隔离级别mysql通过间隙锁,解决了幻读问题二、Spring事务应用及源码分析2.1 Spring事务相关API2.2 编程式事务public class SpringTransactionExample { private static String url = "jdbc:mysql://localhost:3306/sprin..
2021-06-05 16:06:11 281 1
原创 责任链模式在SpringAop中的使用
先模拟一下SpringAop中的责任链public interface MethodInvocation { Object proceed() throws Throwable; }定义拦截器接口public interface MethodInterceptor { Object invoke(MethodInvocation methodInvocation) throws Throwable;}定义前置通知,在目标方法调用前执行通知pub
2021-06-03 21:06:21 375
原创 责任链模式
应用实例要求编写程序完成学校OA系统的采购审批项目:需求采购员采购教学器材如果金额小于5000,由教学主任审批如果金额大于等于5000,小于等于10000,由院长审批如果金额大于10000,由校长审批思路分析和图解定义审核人public abstract class Approver { // 下一个处理者 Approver approver; // 名字 String name; // 构造器 pub...
2021-06-03 20:11:47 180
原创 闲聊 InstantiationAwareBeanPostProcessor
为什么要说这个呢?因为我发现,很多人都以为 Spring AOP 是通过这个接口来作用于 bean 生成代理的。下面先看一下整个SpringIOC流程图中可以看出,InstantiationAwareBeanPostProcessor作用于Bean初始化前,分别在Bean实例化前和实例化后执行:postProcessBeforeInstantiationpostProcessAfterInstantiation而BeanPostProcessor中的两个方法,作用于Bean实例化后..
2021-06-02 17:53:41 814 2
原创 JDK&CGLIB动态代理源码解析
一、JDK动态代理jdk代理是基于接口的代理,所以被代理的对象必须是有接口实现的类,代理创建时通过Proxy.newProxyInstance实现的,这个方法有三个参数://指定要使用的类加载器ClassLoader loader,//被代理的类所实现的接口,增强接口的方法Class<?>[] interfaces,//方法处理器,会拦截所有方法,然后执行增强参数。InvocationHandler inoker参考博客、参考博客、参考博客、参考博客...
2021-06-01 20:19:28 532 1
SpringCloud 第二季.mmap
2020-07-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人