首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Java架构师必看

    spring源码分析10

    spring源码分析10 强烈推介IDEA2020.2破解激活,IntelliJ

    41230发布于 2021-04-13
  • 来自专栏【云原生 • Prometheus】

    【Spring源码】- 10 Spring AOP核心API

    概述 Spring的两大核心:IoC和AOP,IoC作为Spring的根基,通过大量的扩展点让系统轻而易举的就可以实现良好的扩展性,而AOP和IoC结合在一起,类似于发生强大化学反应一样,将Spring Spring中提供了一个工具类:Enhancer,Spring中主要就是利用该工具类创建cglib动态代理。 DefaultAopProxyFactory的一个实例,该实例又转而委托给Cglib2AopProxy或JdkDynamicAopProxy,用于创建基于cglib代理还是jdk代理,想了解这两种动态代理区别可以分析下这个类源码 源码】- 09 扩展点之@Import注解一节就使用到该实现类,将标记有@MyAsync注解的方法都进行增强就是利用这个实现类: AnnotationMatchingPointcut pointcut 总结 首先,对Spring AOP底层一些最基础、最核心的API的分析梳理,相信你会对Spring AOP底层实现逻辑有了一个更加深入的理解。

    54121编辑于 2023-03-22
  • 来自专栏波波烤鸭

    【10】Spring源码-分析篇-AOP源码分析

    Spring源码-AOP分析 一、手写AOP回顾   本文我们开始讲解Spring中的AOP原理和源码,我们前面手写了AOP的实现,了解和自己实现AOP应该要具备的内容,我们先回顾下,这对我们理解Spring 相关核心的设计 Advice: Pointcut: Aspect: Advisor: 织入: 二、AOP相关概念的类结构   回顾了前面的内容,然后我们来看看Spring中AOP是如何来实现的了 代理类的结构   在上面的分析中出现了很多代理相关的代码,为了更好的理解,我们来梳理下Spring中的代理相关的结构 2.1 AopProxy   在Spring中创建代理对象都是通过AopProxy这个接口的两个具体实现类来实现的 2.2 AopProxyFactory   在Spring中通过AopProxyFactory这个工厂类来提供AopProxy。 从 Spring 获得的任何 AOP 代理都可以转换为该接口,以允许操作其 AOP 通知。 AdvisedSupport AOP代理配置管理器的基类。

    1.2K50编辑于 2022-10-28
  • 来自专栏漫漫架构路

    Spring源码学习笔记(10)——BeanFactoryPostProcessor

    Spring源码学习笔记(10)——BeanFactoryPostProcessor 一. 也就是说,Spring允许BeanFactoryPostProcessor在容器实例化任何其它bean之前读取配置元数据,并可以根据需要进行修改,例如可以把bean的scope从singleton改为prototype 源码分析 下面结合源码分析BeanFactoryPostProcessor的工作流程: 首先看BeanFactoryPostProcessor接口,其定义十分简单,只有一个方法,进行BeanFactory

    58210发布于 2020-09-03
  • 来自专栏程序员小航

    Spring 源码学习 10:prepareBeanFactory 和 postProcessBeanFactory

    . // 设置beanFactory的类加载器 beanFactory.setBeanClassLoader(getClassLoader()); // spring.spel.ignore 查看源码发现其实是添加到了 resolvableDependencies 这个 Map 中了。 ?

    55920发布于 2021-01-12
  • 来自专栏小工匠聊架构

    Spring5源码 - 10 Spring事件监听机制_应用篇

    ---- Spring事件概览 Spring事件体系包括三个组件:事件,事件监听器,事件广播器 事件 ? Spring的内置事件中由系统内部进行发布,只需注入监听器 ContextRefreshedEvent 当容器被实例化或refreshed时发布.如调用refresh()方法, 此处的实例化是指所有的 监听到ArtisanEvent....."); event.print(); } } 事件监听器需要实现ApplicationListener接口,泛型接口,泛型类类型就是事件类型 其次需要是spring 监听到ArtisanEvent....."); event.print(); } } 方法上需要标注 @EventListener(ArtisanEvent.class),方法名任意 其次需要是spring ----------确实确实,这就是观察者模式的典型应用,那spring是怎么实现的呢? 下篇我们继续分析Spring的源码实现 ----

    53620发布于 2021-08-17
  • 来自专栏迁移内容

    Spring源码:Spring源码阅读环境搭建

    本篇内容包括:Mac 环境下 gradle 的安装和配置、源码克隆、新建测试类,测试Spring源码 等内容! GitHub 个人仓库 1、Fork GitHub 中的 Spring 官方源码到自己的 GitHub 仓库 # fork源码到个人GitHub仓库 2、同步 GitHub 个人仓库 Spring 源码到 Gitee 个人仓库 # 打开码云gitee新建仓库,点击从其他网站已有仓库导入 # 输入自己GitHub中Spring源码仓库地址URL创建gitee的Spring个人源码仓库 Ps:如果已经配置了 /gradlew :spring-oxm:compileTestJava 5、打开 IDEA 导入 Spring 源码 # 打开 IDEA 选择 File -> New -> Project from Spring源码 1、新建 my-test 模块进行源码测试 # 新建 module # module 命名 my-test 2、修改 build.gradle 文件 模块创建好之后只有一个build.gradle

    1.2K20编辑于 2022-12-01
  • 来自专栏卯金刀GG

    【spring源码解析】spring源码报错问题

    下载spring5.0.4源码 用gradle 编译生成了 spring-jcl spring-core spring-beans 3个eclipse 项目 但是 spring-core 下面的一个

    1.7K20发布于 2019-07-25
  • 来自专栏鳄鱼儿的技术分享

    Spring源码学习,Spring Framework源码编译

    Spring Framework源码编译 博主本地java版本为 java version "11.0.10" 拉取源码 选定存放路径直接只用git clone拉取最新源码 git clone https ://github.com/spring-projects/spring-framework.git 目前最新RELEASE版本是5.2.18,编译前需要将tag切换至这个版本。 源码命令行编译测试 使用以下两条指令进行编译测试 ./gradlew :spring-oxm:compileTestJava // 官方建议 . ; } } ​ @Service注解是在spring-context中,前面依赖导入的作用就体现了。 参考 spring.io/projects/sp…

    49210编辑于 2024-05-21
  • 【源码】spring源码解析

    在 Spring 框架中,核心模块是 Spring Core,它提供了 IoC(Inversion of Control)容器和依赖注入的支持。 在案例分析中,我们可以以一个简单的示例来解析 Spring 框架的源码。假设我们有一个简单的 Web 应用程序,需要实现用户管理的功能,包括用户的增删改查。 然后,我们需要配置 Spring MVC 框架的相关配置。 以上是一个简单的 Spring MVC 应用程序的案例分析。通过这个案例,我们可以深入理解 Spring 框架的工作原理,包括 IoC 容器的实现、依赖注入的过程、AOP 的实现等。 同时,我们也可以通过调试源码的方式来进一步了解 Spring 框架的内部实现细节。

    28710编辑于 2025-08-29
  • 来自专栏爪哇缪斯

    (六)Spring源码解析:Spring AOP源码解析

    但是为了配置简便,Spring使用了自定义配置来帮助我们自动注册AnnotationAwareAspectJAutoProxyCreator,注册流程如下所示: public static BeanDefinition ) continue; // isEligibleBean方法默认返回true // 官方注释:我们必须小心不要急切地实例化bean,因为在这种情况下,它们将被Spring ---------------afterExecutor-----------------"); return result; } } 重温了cglib动态代理之后,我们来看Spring 更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」 往期推荐 (五)Spring源码解析:ApplicationContext解析 (四)Spring源码解析 :bean的加载流程 (三)Spring源码解析:自定义标签解析 (二)Spring源码解析:默认标签解析 (一)Spring源码解析:容器的基本实现

    1.5K30编辑于 2023-09-06
  • 来自专栏springboot

    Spring源码解析(十):spring整合mybatis源码

    整合mybatis原理 根据上面spring整合mybatis的配置类的信息,要想清楚Spring是如何整合Mybatis的,我们只要弄明白两点 @MapperScan注解的作用 SqlSessionFactoryBean Spring跟Mybatis整合 // 最重要的事情就是将Mybatis生成的代理对象交由Spring来管理 // 实现这个功能的就是这个MapperFactoryBean Class<? 源码解析(二):bean容器的创建、默认后置处理器、扫描包路径bean 核心内容就是扫描指定包将符合要求Class注册bean定义 # ClassPathBeanDefinitionScanner类方法 return session; } 3.4、MapperFactoryBean的checkDaoConfig方法 创建 Mapper接口代理对象初始化时候,会调用此方法 这里就会进入 mybatis 的源码了 Mybatis源码解析(八):Mapper代理原理 // 之前分析过了,这个方法会在MapperFactoryBean进行初始化的时候调用 protected void checkDaoConfig()

    51511编辑于 2025-01-21
  • 来自专栏杨不易呀

    Spring框架源码分析之Spring源码编译

    Spring 源码环境搭建Spring 源码下载地址:https://github.com/spring-projects/spring-frameworkGradle 下载地址:https://gradle.org /releases/查看 Spring 源码中使用的 Gradle 版本,打开下载好的 Spring 源码解压,然后进入到如下图所示的目录当中:图片打开 gradle-wrapper.properties Xmx2048Morg.gradle.caching=trueorg.gradle.parallel=trueorg.gradle.configureondemand=trueorg.gradle.daemon=true导入源码依次点击 File → New → Project from Existing Sources,选择源码包路径下的 build.gradle 文件完成源码导入如下图:图片图片idea 配置 gradle依次点击 预编译先编译 spring-core 点击 idea 右边的侧边栏当中的 gradle 选择该模块,spring-core/Tashks/other/compileTestJava 如下图:图片spring-core

    1.1K110编辑于 2023-09-25
  • 来自专栏JAVA体系

    【Spring源码】Spring Event事件

    今天就来讲一下Spring的事件机制。 2、什么是Spring Event? Spring框架中的事件是一种观察者设计模式的实现,用于在应用程序中处理各种状态变化。 Spring的事件机制允许对象在状态发生变化时发布事件,其他对象则可以订阅这些事件并在事件发生时执行特定的操作。 3、基本使用 Spring Event的使用基本有以下几个步骤:定义事件,发布事件,监听事件。 doSomething(); } } 4、Spring Event是同步还是异步? 默认情况下 Spring Event是同步执行的。你怎么这么确定?我们先来演示下上面的demo。 4.1、源码实现 如果还是不信?

    1.1K10编辑于 2024-01-25
  • 来自专栏JAVA体系

    【Spring源码】Spring事务原理

    2、Spring事务基本概念 2.1、基础配置 我们先来回顾一下Spring事务的基础配置信息,以下由ChatGPT给我们提供的相关资料: 2.1.1、Spring事务的基础配置 1、问:Spring事务的基础配置 而是交由Spring自己完成。那么Spring使用事务的方式有哪些呢?在 Spring 中,我们可以通过声明式事务管理和编程式事务管理两种方式来管理事务。 4、源码看事务 Spring中通过注解@EnableTransactionManagement开启事务,那么我们从这个注解开始入手: @Target(ElementType.TYPE) @Retention exception overridden by commit exception", ex); throw ex2; } } } } 至此,基本上源码的大致事务处理流程就已经走完 5、事务失效 前面讲到了一些Spring相关的基础理论知识,以及源码是如何实现的。

    92110编辑于 2024-01-25
  • 来自专栏springboot

    Spring源码解析(十一):spring事务配置类源码

    interface TransactionManager { } PlatformTransactionManager的实现类 AbstractPlatformTransactionManager,Spring 提供的一个事务管理的基类,提供了事务管理的模板,实现了Spring事务管理的一个标准流程 判断当前是否已经存在一个事务 应用合适的事务传播行为 在必要的时候挂起/恢复事务 提交时检查事务是否被标记成为rollback-only 赋予的,例如事务的传播机制 Spring中一共定义了7种事务的传播机制 TransactionDefinition.PROPAGATION_REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务 整合mybatis并添加事务配置和使用 @Configuration // 声明该类是核心配置类 @ComponentScan("com.xc") // 开启spring注解扫描 @MapperScan AOP切面一样Spring源码解析(九):AOP源码之@Aspect所有相关注解解析 对于事务代理对象,只是在拦截器链中加上事务拦截器TransactionInterceptor 由图可知,先执行事务拦截器

    1.1K11编辑于 2025-01-21
  • 来自专栏学习笔记持续记录中...

    Spring - AOP(10)

    AOP通过切点定位到特定的连接点 Spring中启用AspectJ注解支持 AspectJ:Java社区里最完整最流行的AOP框架 通知是标注有注解的简单的Java方法: @Before 前置通知,在方法执行之前执行 Around环绕通知,环绕着方法执行 // maven注入依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop 编写AspectJ切入点表达式 通过方法的签名来匹配各种方法: execution * com.sangyu.test10.ArithmeticCalculator.*(...) 匹配ArithmeticCalculator接口的所有共有方法 execution public double com.sangyu.test10.ArithmeticCalculator.*(...) 匹配第一个参数为double类型的方法 ...匹配任意数量任意类型的参数 execution public double com.sangyu.test10.ArithmeticCalculator.

    45020发布于 2020-03-17
  • 来自专栏程序员备忘录

    spring源码(八)

    其实我一直觉得控制是否启动servlet容器的控制在于OnRefresh中,现在发现spring调用前就决定了一切。

    70510发布于 2020-09-21
  • 来自专栏Java实战博客

    Spring源码分析

    spring创建对象 spring注入属性 Bean管理的实现方式 基于xml创建对象 基于xml方式注入属性 IOC操作Bean管理(FactortBean) 基于注解创建对象 AOP:面向切面编程 为了避免这类事情的发生,我觉得重新分析Spring源码,让这种个人偏见不再发生! IOC:控制反转 IOC概念 ioc的含义是:把创建对象的过程交给Spring容器进行管理。 创建对象、注入属性 spring创建对象 spring注入属性 Bean管理的实现方式 基于xml方式、基于注解方式 基于xml创建对象 <bean id="UserDao" class="com.alibaba.XXX name="user"> <property name="name" value="zhangsan"></propetry> <property name="age" value="<em>10</em> "></constructor-age> <constructor-age index="填写1,代表第一个参数,不推荐使用index" value="<em>10</em>"></constructor-age

    45620编辑于 2022-12-05
  • 来自专栏JavaEdge

    Spring Http源码

    /* Copyright 2002-2017 the original author or authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licen

    1.2K61发布于 2018-04-28
领券