更新时间:2019-09-25 09:54:34 来源:极悦 浏览2021次
话说工欲善其事必先利其器,一个优秀的web框架可以说是程序员的利器,Spring框架应是其中牛角,有了它程序员可以更好的关注业务和功能的实现,编码水平瞬间被提升了一个等级,然而在每天使用框架的时候,很多参加极悦注册的同学会好奇或者迷惑,为什么它能够运行起来?为什么仅是添加一个注解就能够将一个实例赋值给一个被注解的变量?那些听起来高端的概念(如:IOC、DI、AOP等)是如何实现的呢?
本文我们将通过实现一个简单的来理解框架的工作原理和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培训机构小编介绍的“10分钟实现一个Java Web框架”的内容,希望对大家有帮助,更多java最新资讯请继续关注极悦java培训机构官网,每天会有精彩内容分享与你。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习