mghio's Blog

Java 搬运工 & 终身学习者。


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

  • 搜索

如何实现一个简易版的 Spring - 如何实现 AOP(终结篇)

发表于 2021-06-13 | 分类于 Java , AOP , Spring |
字数统计: 2.5k 字 | 阅读时长 ≈ 12 分钟

cover.jpeg

前言

在 上篇 实现了 判断一个类的方式是符合配置的 pointcut 表达式、根据一个 Bean 的名称和方法名,获取 Method 对象、实现了 BeforeAdvice、AfterReturningAdvice 以及 AfterThrowingAdvice并按照指定次序调用 等功能,这篇再来看看剩下的 代理对象如何生成、根据 XML 配置文件生成 BeanDefintion以及如何将生成的代理对象放入到容器中 等功能,话不多说,下面进入主题。

阅读全文 »

如何实现一个简易版的 Spring - 如何实现 AOP(下)

发表于 2021-06-06 | 分类于 Java , AOP , Spring |
字数统计: 2.5k 字 | 阅读时长 ≈ 11 分钟

cover.jpeg

前言

前面两篇 如何实现 AOP(上)、如何实现 AOP(中) 做了一些 AOP 的核心基础知识简要介绍,本文进入到了实战环节了,去实现一个基于 XML 配置的简易版 AOP,虽然是简易版的但是麻雀虽小五脏俱全,一些核心的功能都会实现,通过实现这个简易版的 AOP,相信你会对 AOP 会有更加深入的理解,不止知其然,还能知其所以然。AOP 的顶层接口规范和底层依赖基础组件都是由一个叫 AOP Alliance 的组织制定的,我们经常听到的 AspectJ、ASM、CGLIB 就是其中被管理的一些项目,需要明确的一点是,在 Spring 中只是使用了 AspectJ 的核心概念和核心类,并不是像 AspectJ 那样在编译期实现的 AOP,而是在运行期。话不多说,下面开始进入主题。

阅读全文 »

如何实现一个简易版的 Spring - 如何实现 AOP(中)

发表于 2021-05-30 | 分类于 Java , Spring , AOP |
字数统计: 2.7k 字 | 阅读时长 ≈ 10 分钟

cover.jpeg

前言

在上篇 如何实现 AOP(上) 介绍了 AOP 技术出现的原因和一些重要的概念,在我们自己实现之前有必要先了解一下 AOP 底层到底是如何运作的,所以这篇再来看看 AOP 实现所依赖的一些核心基础技术。AOP 是使用动态代理和字节码生成技术来实现的,在运行期(注意:不是编译期!)为目标对象生成代理对象,然后将横切逻辑织入到生成的代理对象中,最后系统使用的是带有横切逻辑的代理对象,而不是被代理对象,由代理对象转发到被代理对象。

阅读全文 »

如何实现一个简易版的 Spring - 如何实现 AOP(上)

发表于 2021-05-22 | 分类于 Java , Spring , AOP |
字数统计: 3.2k 字 | 阅读时长 ≈ 12 分钟

cover.jpeg

前言

本文是「如何实现一个简易版的 Spring 系列」的第五篇,在之前介绍了 Spring 中的核心技术之一 IoC,从这篇开始我们再来看看 Spring 的另一个重要的技术——AOP。用过 Spring 框架进行开发的朋友们相信或多或少应该接触过 AOP,用中文描述就是面向切面编程。学习一个新技术了解其产生的背景是至关重要的,在刚开始接触 AOP 时不知道你有没有想过这个问题,既然在面向对象的语言中已经有了 OOP 了,为什么还需要 AOP 呢?换个问法也就是说在 OOP 中有哪些场景其实处理得并不优雅,需要重新寻找一种新的技术去解决处理?(P.S. 这里建议暂停十秒钟,自己先思考一下…)

阅读全文 »

论基础理论知识的重要性

发表于 2021-04-15 | 分类于 Java , 基础理论知识 |
字数统计: 1.1k 字 | 阅读时长 ≈ 3 分钟

cover.jpeg

前言

在计算机行业工作的人们,最大的感触就是这个行业里总是会出现很多的新东西,各种技术、框架等等,变化无处不在,有很大一部分人都比较焦虑。在一些论坛或者社区里面总是有人在问如何学习一门新技术?怎样才能跟上技术的潮流?我想说的是,我们应该打牢基础,应对变化,以不变应万变。

阅读全文 »

如何实现一个简易版的 Spring - 如何实现 @Autowired 注解

发表于 2021-03-07 | 分类于 Java , Spring |
字数统计: 2.2k 字 | 阅读时长 ≈ 9 分钟

cover.jpeg

前言

本文是 如何实现一个简易版的 Spring 系列第四篇,在 上篇 介绍了 @Component 注解的实现,这篇再来看看在使用 Spring 框架开发中常用的 @Autowired 注入要如何实现,大家用过 Spring 都知道,该注解可以用在字段、构造函数以及setter 方法上,限于篇幅原因我们主要讨论用在字段的方式实现,其它的使用方式大体思路是相同的,不同的只是解析和注入方式有所区别,话不多说,下面进入我们今天的正题—如何实现一个简易版的 Spring - 如何实现 @Autowired 注解。

阅读全文 »

几个好用的 Google 搜索技巧

发表于 2021-03-01 | 分类于 Google , 搜索 |
字数统计: 894 字 | 阅读时长 ≈ 3 分钟

cover.jpeg

前言

搜索能力是被绝大多数人低估的一项基本素质,绝大部分做编程技术相关的朋友应该都知道如何使用 Google,但是并不知道如何利用它的潜力。其实不管是 Google 还是 百度,会搜索的人一样都可以查找到需要的东西,不会搜索的人用什么都不好使。下面介绍一些 Google 常用的搜索技巧以及搜索快捷方式,可以帮助你更快,更准确地找到结果。Google 是世界上功能最强大的搜索引擎,它已经改变了我们查找信息的方式。

阅读全文 »

如何实现一个简易版的 Spring - 如何实现 @Component 注解

发表于 2021-02-14 | 分类于 Java , Spring |
字数统计: 4k 字 | 阅读时长 ≈ 17 分钟

cover.jpeg

前言

前面两篇文章(如何实现一个简易版的 Spring - 如何实现 Setter 注入、如何实现一个简易版的 Spring - 如何实现 Constructor 注入)介绍的都是基于 XML 配置文件方式的实现,从 JDK 5 版本开始 Java 引入了注解支持,带来了极大的便利,Sprinng 也从 2.5 版本开始支持注解方式,使用注解方式我们只需加上相应的注解即可,不再需要去编写繁琐的 XML 配置文件,深受广大 Java 编程人员的喜爱。接下来一起看看如何实现 Spring 框架中最常用的两个注解(@Component、@Autowired),由于涉及到的内容比较多,会分为两篇文章进行介绍,本文先来介绍上半部分 — 如何实现 @Component 注解。

阅读全文 »

如何实现一个简易版的 Spring - 如何实现 Constructor 注入

发表于 2021-01-16 | 分类于 Java , Spring |
字数统计: 1.8k 字 | 阅读时长 ≈ 8 分钟

cover.jpeg

前言

本文是「如何实现一个简易版的 Spring」系列的第二篇,在 第一篇 介绍了如何实现一个基于 XML 的简单 Setter 注入,这篇来看看要如何去实现一个简单的 Constructor 注入功能,实现步骤和 Setter 注入是一样的“套路”,先设计一个数据结构去解析表达 XML 配置文件里的信息,然后再使用这些解析好的数据结构做一些事情,比如这里的 Constructor 注入。话不多说,下面我们直接进入正题。

阅读全文 »

如何实现一个简易版的 Spring - 如何实现 Setter 注入

发表于 2020-11-28 | 分类于 Java , Spring |
字数统计: 2.9k 字 | 阅读时长 ≈ 12 分钟

cover.jpeg

前言

之前在 上篇 提到过会实现一个简易版的 IoC 和 AOP,今天它终于来了。。。相信对于使用 Java 开发语言的朋友们都使用过或者听说过 Spring 这个开发框架,绝大部分的企业级开发中都离不开它,通过 官网 可以了解到其生态非常庞大,针对不同方面的开发提供了一些解决方案,可以说 Spring 框架的诞生是对 Java 开发人员的一大福利,自 2004 年发布以来,Spring 为了解决一些企业开发中的痛点先后引入了很多的特性和功能,其中最重要的就是我们经常听到的 IoC 和 AOP 特性,由于涉及到的知识和细节比较多,会分为几篇文章来介绍,今天这篇(也是第一篇)我们来看看如何实现基于 XML 配置方式的 Setter 注入。

阅读全文 »
123…6
mghio

mghio

52 日志
49 分类
45 标签
RSS
GitHub 思否 简书 掘金 博客园 Mail
友情链接
  • 气象万千
  • xiaojun's blog
  • 淡白记忆博客
  • Junhua's blog
  • 木頭
  • OURONGXING
  • IT运维狗
  • 天边风
  • Z
  • Java 技术驿站
  • 鱼鱼的小站
  • 芋道源码
  • 13blog
  • zhang0peter的博客
  • crossoverJie
  • 黄泽彬个人站
  • 荷戟独彷徨
  • 程序员阿淼
  • 宇宙湾
  • Morcat Blog
  • Jason
  • Coding Husky
  • Doug Lea
  • 解道 jdon
© 2019 — 2022 mghio
湘公网安备43312302000074号 · 湘ICP备2021001218号-1
本网站由 提供 CDN 加速/云存储服务
访客数 人 总访问量 次