扣丁学堂教你10分钟实现一个Java Web框架

2018-08-09 09:25:20 464浏览

话说工欲善其事必先利其器,一个优秀的web框架可以说是程序员的利器,Spring框架应是其中牛角,有了它程序员可以更好的关注业务和功能的实现,编码水平瞬间被提升了一个等级,然而在每天使用框架的时候,很多参加JAVA培训的同学会好奇或者迷惑,为什么它能够运行起来?为什么仅是添加一个注解就能够将一个实例赋值给一个被注解的变量?那些听起来高端的概念(如:IOC、DI、AOP等)是如何实现的呢?

本文我们将通过实现一个简单的JavaWeb框架来理解框架的工作原理和IOC等概念的实现,暂且叫它fine。

首先给出JavaWeb框架工作流程:

 

 

下面是具体实现:

1.创建一个maven项目实现fine框架创建mavne项目添加相关依赖,需要的包大致有:servlet、jsp、jstl、log4j、mysql、json、等以及一些工具包,如果你不打算使用视图层可以忽略jsp和jstl的依赖包。

2.编写加载配置项的工具类ConfigHelper。加一些需要的配置变量。

3.开发类加载器ClassUtil。在程序启动之初加载基础包下所有类。

4.编写注解类,比如@Action(接受http请求的方法),@Inject(依赖注入)等。注解的概念在书《Java编程思想》中介绍的很清楚,是一种标记,本框架中的注解就是为了在运行中框架能够让程序知道被注解的类、方法或者变量有哪些。

5.实现Bean容器ClassHelper。利用反射机制,将上一步加载的类实例化成对象,并将这些对象放入一个静态的Map中,此Map就是Bean容器,它记录了类与对象的关系,以后需要单例的对象时就从Bean容器中取出。

6.实现依赖注入,也就是IoC(控制反转),框架来控制对象之间的依赖关系,将一个对象赋值给一个加了相应标记(注解)的变量。具体实现过程是将第4步中的Bean容器(Map)做遍历操作,查看当前类的成员变量是否带有Inject注解,若带有该注解,就从Bean容器中取出对象,赋值给当前成员变量。

7.实现Controller层,通过一个类ControllerHelper统计请求路径与方法的对应关系。通过反射获取带有@Action注解的方法,获取@Action注解中的请求表达式(请求路径信息),封装一个请求对象(Request)与处理对象(Handler),将Request与Handler建立映射关系,处理请求。

8.实现一个请求转发器,处理所有请求,从HttpServletRequest对象中获取请求路径与参数,将请求路径与ControllerHelper统计的请求路径做对应关系,并将参数传入ControllerHelper中的相应方法。

至此,一个能够处理http请求的框架终于开发完成,其中还有很多不足之处,但是通过此框架能够深入的理解现在工程中使用的优秀框架的工作原理,有利于我们更好的在实际中排查问题,甚至定义一些特定规则优化现有框架。


以上就是扣丁学堂Java在线学习小编给大家分享的文章,希望对小伙伴们有所帮助,想要了解更多关于Java开发内容的小伙伴可以登录扣丁学堂官网咨询,扣丁学堂有专业的Java培训班邀请有理想的你加入。扣丁学堂不仅有专业的Java培训班供大家学习,还有与时俱进的课程体系和大量的Java在线视频教程让学员免费观看学习,想要学好Java开发的小伙伴快到扣丁学堂来了解详情吧。扣丁学堂Java技术交流群:670348138。

【关注微信公众号获取更多学习资料】

 

 

查看更多关于“Java开发资讯的相关文章>>

标签: JAVA培训 JAVA视频教程 JAVA开发工程师

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号