![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
文章平均质量分 77
知识分子_
QQ:1149513559
展开
-
框架源码专题:springIOC的加载过程,bean的生命周期,结合spring源码分析
文章目录1.BeanFactory和ApplicationContext的区别?1.BeanFactory和ApplicationContext的区别? BeanFactory是ApplicationContext的顶级接口,ApplicationContext在前者的基础上又增加了很多扩展点,例如:注解处理,bean扫描和AOP代理等等。和BeanFactory相比更值得推荐。 &n原创 2020-09-17 15:06:24 · 686 阅读 · 0 评论 -
springboot如何通过AOP获取并修改返回参数
通过AOP获取返回参数,做业务处理原创 2022-07-06 22:25:24 · 5031 阅读 · 1 评论 -
通过@Import注解把类注入容器的四种方式
文章目录准备工作方案一:导入普通类ConfigA方案二:导入`@Configuration`配置类ConfigB方案三:导入`ImportSelector`的实现类方式四:导入`ImportBeanDefinitionRegistrar`的实现类测试结果 @Import是spring中的一个注解,在其他框架与spring整合时应用广泛,比如redis的自动配置RedisAutoConfig原创 2021-08-12 21:55:00 · 2118 阅读 · 0 评论 -
Spring的IOC容器为什么用反射而不用new来创建实例?
文章目录1. 什么是反射?2. 反射与new的区别2. IOC为什么要使用 工厂 + 反射 创建对象?1. 什么是反射? 反射是java的一种特性,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射的四种创建对象方式以对象.getClass()的形式获取对象Person person=原创 2021-06-09 11:41:26 · 4690 阅读 · 0 评论 -
框架源码专题:Spring是如何解决循环依赖的?
文章目录1.什么是循环依赖2.解决循环依赖思路3.二级缓存能否解决循环依赖,三级缓存存在的意义4.多例和构造器为什么无法解决循环依赖5.如何进行扩展1.什么是循环依赖 所所谓的循环依赖是指,A 依赖 B,B 又依赖 A,它们之间形成了循环依赖。或者是 A 依赖 B,B 依赖 C,C 又依 赖 A。它们之间的依赖关系如下:循环依赖代码如下:public class InstanceA { @Au原创 2020-09-22 12:34:41 · 764 阅读 · 1 评论 -
框架源码专题:Spring的事件监听、发布机制 ApplicationListener
文章目录1.Spring内置事件2.自定义事件3.事件监听器4.事件发布 publishEvent4.Spring事件原理1.Spring内置事件 Spring内置事件是Spring在内部帮我们写好的事件,在使用时,不需要重写他们,只需在容器中注入重写后的监听器即可。事件说明ContextRefreshedEvent所有单例bean都已被实例化, 所有的容器对象都已准备好可使用,如果原创 2020-09-24 17:48:10 · 688 阅读 · 0 评论 -
框架源码专题:Spring的Aop实现原理,Spring AOP 与 AspectJ 的关系
文章目录1. Spring AOP 与 AspectJ 的关系2. Spring AOP术语解释3. Spring AOP应用实例4. Spring AOP有几种配置方式?5. Spring AOP源码解析1. Spring AOP 与 AspectJ 的关系 Spring AOP 要实现的是在我们原来写的代码的基础上,进行一定的包装,如在方法执行前、方法返回后、方法抛出异常后等地方进行一定的拦截处理或者增强原创 2020-09-27 17:23:54 · 970 阅读 · 1 评论 -
框架源码专题:Spring声明式事务Transactional的原理
文章目录1. @Transactional的使用2. spring事务的原理2.1 开启事务,注册bean的后置处理器和相关bean对象,封装Advisor2.2 匹配并创建动态代理1. @Transactional的使用①:添加在接口实现类或接口实现方法上,而不是接口类中。②:访问权限:public 的方法才起作用。@Transactional 注解应该只被应用到 public 方法上,这是由 Spring AOP 的本质决定的。③:接口中A、B两个方法,A无@Transactional标签,B原创 2020-10-12 18:03:59 · 1243 阅读 · 0 评论 -
框架源码专题:Spring是如何集成Mybatis的?Spring怎么管理Mapper接口的动态代理
文章目录1. Spring集成Mybatis代码示例2. Spring 如何解析Mybatis配置文件3. Spring是怎么管理Mapper接口的动态代理的1. Spring集成Mybatis代码示例 Spring在集成Mybatis时,使用SqlSessionFactoryBean来完成Configuration的解析,代码如下:@EnableTransactionManagement@Configu原创 2020-10-28 18:04:26 · 1175 阅读 · 0 评论 -
spring@Autowired的对象为null,非容器中的类如何调用容器中的类
1.问题描述我们平时使用@Autowired注入对象时,一般被注入的类都带有@Coponent、@Controller、@Service 、@repository等注解才可以。注入类和被注入类都被spring所管理,可以完成调用。但是当非容器类(没加以上注解时)使用@Autowired调用容器中的类时,注入对象为空,报空指针异常HelloService为加入容器中的类BeanUtil为未加入容器的类,调用HelloService会报空指针异常2.问题解决创建工具类BeanUtils,在这个工具原创 2020-06-03 11:22:22 · 1731 阅读 · 2 评论 -
spring的IOC原理,容器管理的bean类型、bean的生命周期
1.什么是IOC(1)控制反转,把对象创建和对象之间的调用过程,交给 Spring 进行管理(2)使用 IOC 目的:为了耦合度降低为什么IOC可以极大的降低耦合度?(1)原始版:一般我们想使用userDao中的方法时,会在调用地创建userDao的对象,当userDao对象包名更改或者方法名更改时,也同时要修改userService中的代码,耦合度很高!(2)进阶版,使用工厂模式生成userDao对象,解决了service和dao的耦合,但是dao和factory又耦合(3)最终版 IOC原创 2020-06-02 17:16:58 · 656 阅读 · 0 评论 -
spring的事务回滚机制,事务原理
1.spring事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:1.获取连接 Connection con = DriverManager.getConnection()2.开启事务con.setAutoCommit(true/false);3.执行CRUD4.提交事务/回滚事务 con.commit() / con.rollback();5.关闭连接 conn.原创 2020-06-02 15:08:12 · 918 阅读 · 0 评论 -
Java解决循环注入问题
1.构造器循环注入//A和b互相引用,测试依赖注入问题@Componentpublic class A { @Autowired B b; public A( B b) { System.out.println("A的构造器引用b))))))))))))))))))))"); }}B的构造器同时也注入了A@Componentpub...原创 2019-11-15 12:08:46 · 2680 阅读 · 0 评论 -
Spring中的Aop底层原理
Aop底层aop底层使用的是动态代理,分为两种情况:第一种:要增强的类实现了接口,使用JDK 动态代理第二种: 没有接口情况,使用 CGLIB 动态代理2.下面具体介绍下JDK动态代理jdk代理中的代理对象使用的是Proxy 类里面的newProxyInstance()方法创建代理对象newProxyInstance()方法的参数解释:第一参数,类加载器第二参数,增强方法所在的类,这个类实现的接口,支持多个接口第三参数,实现这个接口 InvocationHandler,创建代理对象,原创 2020-06-03 17:47:19 · 581 阅读 · 0 评论