青云博客 记录、分享

归档

2024 年 04 月

从性能上特性对比: JDK动态代理要求目标对象必须实现至少一个接口,因为它基于接口生成代理类。而CGLIB动态代理不依赖于目标对象是否实现接口,可以代理没有实现接口的类,它通过继承或者代理目标对象的父类来实现代理。 从创建代理时的性能对比: JDK动态代理通常比CGLIB动态代理创建速度更快,因为它
大部分失效是由于: 内部方法调用: 如果在同一个类中的一个方法调用另一个方法,AOP通知可能不会触发,因为AOP通常是通过代理对象拦截外部方法调用的。解决方式是注入本类对象进行调用, 或者设置暴露当前代理对象到本地线程, 可以通过AopContext.currentProxy() 拿到当前正在调用的
Spring AOP是Spring框架的一个重要组成部分,用于实现面向切面编程。它通过在方法调用前、调用后或异常抛出时插入通知,允许开发者在核心业务逻辑之外执行横切关注点的代码。 底层实现主要分两部分:创建AOP动态代理和调用代理 在启动Spring会创建AOP动态代理: 首先通过AspectJ解析
大部分失效是由于: 方法是private也会失效,解决:改成public: Spring的事务代理通常是通过Java动态代理或CGLIB动态代理生成的,这些代理要求目标方法是公开可访问的(public)。私有方法无法被代理,因此事务将无效。解决方法是将目标方法改为public或protected。
在多线程环境下,Spring事务管理默认情况下无法保证全局事务的一致性。这是因为Spring的本地事务管理是基于线程的,每个线程都有自己的独立事务。 Spring的事务管理通常将事务信息存储在ThreadLocal中,这意味着每个线程只能拥有一个事务。这确保了在单个线程内的数据库操作处于同一个事务中
简单工厂: BeanFactory:Spring的BeanFactory充当工厂,负责根据配置信息创建Bean实例。它是一种工厂模式的应用,根据指定的类名或ID创建Bean对象。 工厂方法: FactoryBean:FactoryBean接口允许用户自定义Bean的创建逻辑,实现了工厂方法模式。开发
Spring事件监听的核心机制围绕观察者模式展开: 观察者模式: 它允许一个对象(称为主题或被观察者)维护一组依赖于它的对象(称为观察者),并在主题状态发生变化时通知观察者。 它包含三个核心: 事件: 事件是观察者模式中的主题状态变化的具体表示,它封装了事件发生时的信息。在Spring中,事件通常是
拦截器和过滤器在Web应用中都扮演着请求和响应处理的角色,但它们之间存在一些关键区别。 首先,归属不同。拦截器是SpringMVC框架的一部分,而过滤器是Servlet规范的一部分。拦截器主要用于对控制器层的请求进行处理,它们提供了更细粒度的控制,可以在请求进入控制器之前和之后执行特定的逻辑,例如身
今天,我想谈谈 Spring 提供的@Transactional(readOnly = true)。 很多同学都说@Transactional(readOnly = true)提高了性能。那我们不得不思考: @Transactional(readOnly = true) Spring对它做了什么?真
首先,它们帮助划分功能边界,使得大型应用程序更易于管理。通过将不同模块或层次的组件分别放置在父子容器中,我们能够清晰地定义每个容器的职责,从而提高了代码的可维护性和可扩展性。 其次,父子容器在规范整体架构方面起到了关键作用。例如,我们可以将业务逻辑层(Service)和数据访问层(DAO)交给Spr
上一页 下一页