![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SpringBoot
文章平均质量分 70
Alexon Xu
working、thinking、learning、sharing
展开
-
BeanFactory和FactoryBean的区别
但少数情况下,容器中的 bean 本身就是工厂,作用是产生其他 bean 实例。即一个Bean A如果实现了FactoryBean接口,那么A就变成了一个工厂,根据A的名称获取到的实际上是工厂调用getObject()返回的对象,而不是A本身,如果要获取工厂A自身的实例,那么需要在名称前面加上’&'符号。BeanFactory是一个接口,它是Spring中工厂的顶层规范,是SpringIoc容器的核心接口,它定义了getBean()、containsBean()等管理Bean的通用方法。转载 2023-10-23 19:48:28 · 132 阅读 · 0 评论 -
异常信息记录入库
全局异常异步记录到数据库原创 2023-02-25 18:05:20 · 1032 阅读 · 1 评论 -
AOP核心
面相关切面编程,利用AOP可以对业务的各个部分进行隔离,使得业务逻辑各部分之间耦合度降低,提高开发效率。基于AspectJ实现AOP操作有两种方式实现:XML配置和使用注解。原创 2022-10-17 23:31:48 · 438 阅读 · 0 评论 -
Spring IOC核心知识
控制反转(IOC: Inversion Of Control),把对象的创建和对象之间的调用过程都交给Spring管理,从而降低耦合度。原创 2022-10-10 20:32:40 · 908 阅读 · 0 评论 -
SpringBoot配置自动加载机制
自动配置加载机制原创 2022-10-10 14:53:26 · 2197 阅读 · 1 评论 -
Fiddler拦截HTTPS请求
fiddler拦截浏览器的HTTPS请求原创 2022-07-30 10:34:00 · 1174 阅读 · 0 评论 -
Springboot中使用LUA脚本进行Redis操作
Springboot中使用LUA脚本进行Redis操作原创 2022-07-27 19:56:54 · 1812 阅读 · 0 评论 -
Spring事务执行的原理(@Transactional)
事务执行的原理(@Transactional)Spring框架默认使用基于CGLIB的AOP动态代理实现,根据前面的CGLIB动态代理原理的分析(Spring动态代理原理)。可以发现,应用启动的时候,在@EnableTransactionManagement注解的作用下会自动生成代理对象CglibAopProxy,并会为方法设置对应的拦截器链;当调用带有@Transactional注解的方法时,DynamicAdvisedInterceptor#intercept能够获取到该方法的拦截器链,由于方法带有事原创 2022-05-12 16:08:09 · 963 阅读 · 0 评论 -
Spring的动态代理原理
Spring动态代理原理Spring动态代理有两种:CGLIB动态代理和JDK动态代理。JDK动态代理可以代理接口,不能代理没有实现接口的类;而CGLIB通过字节码技术可以动态生成被代理类的子类,从而可以代理没有实现接口的类;但是不能代理非public和final的方法,因为子类不可见。Spring框架中使用DefaultAopProxyFactory来确定使用CGLIB或者JDK的动态代理一般满足以下条件之一 就会进行CGLIB动态代理:optimize标志位被设定proxyTargetCl原创 2022-05-09 21:40:43 · 2001 阅读 · 0 评论 -
Spring事务原理之关键注解
Spring事务Spring事务通过AOP切面来增强目标方法的调用,控制事务的开启、提交和回滚。主要的接口有:TransactionManager:Spring事务管理器实现的标志接口,对标准事务和反应式事务都可用;TransactionStatus:代表事务的状态,事务代码可以使用它来获取事务的状态,也可以在失败的时候,编码式的请求一个回滚;他还包含了SavepointManager接口,用来访问保存点管理信息;注意只有底层事务管理器支持的时候,才能使用保存点管理器。TransactionDef原创 2022-05-07 20:59:46 · 553 阅读 · 0 评论 -
SpringBoot启动原理
启动原理@SpringBootApplicationpublic class Application extends SpringBootServletInitializer { public static void main(String[] args) { // 新建SpringApplication SpringApplication app = new SpringApplication(Application.class); // 执行r原创 2022-04-19 19:19:28 · 398 阅读 · 0 评论 -
集成Mybatis-Plus
集成Mybatis-Plus引入依赖 <!-- mybatis-plus依赖 --><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version></dependency> <!-- a原创 2022-03-07 19:15:11 · 890 阅读 · 0 评论 -
动态代理原理和实例
动态代理1、使用场景通过代理对目标类方法进行增强;使用RPC框架的时,框架本身并不能提前知道各个业务方要调用哪些接口的哪些方法 。这时,通过动态代理的方式建立一个中间人给客户端使用,方便框架搭建逻辑, 可以使客户端代码和框架解耦;Spring的AOP机制采用动态代理的机制来实现切面编程。2、JDK和CGLIB动态代理的区别CGLIB动态代理是JDK动态代理的补充,JDK动态代理只能代理具有接口的实现类,不能代理没有接口的Java类中的方法,CGLIB既可以代理接口,亦可以代理普通JAVA类原创 2022-01-03 15:21:29 · 185 阅读 · 0 评论 -
Spring事务回滚典型场景
事务回滚场景@Transactional注解默认事务传播级别为REQUIRED,默认回滚异常为RuntimeException场景1因为RuntimeException继承了Exception场景2因为 Transactional注解默认捕获RuntimeException后回滚场景3因为 Transactional注解默认捕获RuntimeException后回滚场景4因为异常被捕获了没有抛出来...原创 2021-12-10 12:17:21 · 242 阅读 · 0 评论