首页 > 编程知识 正文

手写spring框架的难度,spring 手写体

时间:2023-05-03 17:31:58 阅读:210180 作者:2616

在学习完Spring框架之后, 我们知道了 Spring容器, IOC, AOP, 事务管理, SpringMVC 这些Spring的核心内容, 也知道了它们底层实现的基本原理, 比如Spring容器就是个Map映射, IOC底层就是反射机制, AOP底层是动态代理, SpringMVC不就是对Servlet进行了下封装嘛! 哈哈, 当然这些只是些皮毛, Spring除此之外还有更加复杂的设计, 但我们完全可以抛弃那些复杂的设计, 通过这些底层原理自己来写个Spring框架. 写完之后, 相信我们会对Spring框架有个更加深刻的理解.

前置知识

在自己动手写Spring框架之前, 我们得先了解下Spring框架的核心知识点, 如下:

Spring基础

Spring AOP

Spring事务管理

Spring MVC

Java反射机制

动态代理

Java注解

代码下载

在开始动手写博客之前, 我已经完成了自己的Spring框架, 并给它取名为 handwritten-mvc-framwork, GitHub地址为:
https://github.com/tyshawnlee/handwritten-mvc.git

大家可以 clone 到自己的IDE中, 然后跟着下面的博客我们一起学习.

项目导入后结构如下:

其中, handwritten-mvc-framwork 为自己实现的Spring框架, handwritten-mvc-example 为该框架的实例.

开始

(1) 建立框架

我们首先创建一个Maven项目, 取名为 handwritten-mvc-framwork, 我们尽可能少的使用第三方依赖, 精简后的依赖如下:

<dependencies> <!-- Servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!-- JSP --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> <!-- JSP标准标签库 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>runtime</scope> </dependency> <!-- MySQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.33</version> <scope>runtime</scope> </dependency> <!--数据库连接池--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-dbcp2</artifactId> <version>2.0.1</version> </dependency> <!--JDBC工具类库--> <dependency> <groupId>commons-dbutils</groupId> <artifactId>commons-dbutils</artifactId> <version>1.6</version> </dependency> <!-- 日志框架 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.7</version> </dependency> <!-- 动态代理依赖 --> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.2.2</version> </dependency> <!-- 通用工具包 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.3.2</version> </dependency> <!--集合工具包--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.0</version> </dependency> <!--JSON依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.49</version> </dependency></dependencies>

(2) 实现Spring容器和IOC

手写Spring框架之IOC

(3) 实现Spring MVC

手写Spring框架之MVC

(4) 实现Spring AOP和事务管理

手写Spring框架之AOP

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。