自己动手实现IOC和MVC(一)

12 篇文章 0 订阅

最近看了一下spring ioc的源码 觉得很有意思 ,于是就想自己也实现一个ioc试试的想法 ,接着就有了现在这个自己动手实现IOC和MVC。

spring3 ioc的实现是基于java annotation 或者xml配置的 ,现在大多数的人越来越喜欢annotation了,但是网上关于annotation和xml配置的说法是众说纷纭,各有各的好坏,本人比较喜欢annotation ,用起来简单方便,所以咱们要实现ioc是基于java annotation

1、 spring是怎么把你的注释的class实例化的:

 ① spring 会扫描你配置的package以及package子包下的所有class是否标注有annotation(如:@Repository,@Service,@Controller)

 ② spring 然后他会把扫描的这些类得信息赋值给一个类似于BeanDefinition.java中,这个类包括了String id (唯一标识Bean),String className(如:com.ajun,User),List  roperties(存入注入时候的属性信息)同时在这个扫描到这个class内的属性标有@Resource的field,这个field就是进行注入的,赋值给Property.java,Property.java包含了String name(属性名字),String ref(要注入到哪个class的id)

 ③ 此时spring会有List 里面装你需要进行实例化的class的信息的BeanDefinition.java,接着就是循环这个list,利用java反射机制实例化class,实例的过程会把所有实例化完的bean放在一个Map,供以后进行使用。

2、下面介绍一下整个Project的结构

 com.ajunframework.beans主要是包含对bean的操作的类

com.ajunframework.beans.annotation主要是定义一些java annotation 用于扫描进行实例化bean

com.ajunframework.beans.applicationContext用于管理bean上下文

com.ajunframework.beans.factory工厂包 提供一些操作实例化之后bean的操作

com.ajunframework.beans.definition 用于定义bean的一些信息的class

com.ajunframework.beans.scan 用于扫面package以及package子包下的所有class

com.ajunframework.beans.utils一些相关操作辅助class

这一节主要是介绍整个系列的背景和整个project的结构以及spring ioc原理

下一节开始介绍具体的实现过程






  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
自己动手做框架是一种非常有挑战性的任务,尤其是对于 ORM(对象关系映射)、MVC(模型-视图-控制器)和IOC(控制反转)这三个框架而言。以下是对这三个框架的简要介绍,以及它们的实现过程。 首先,ORM(对象关系映射)框架是用于将数据库中的表映射为对象的一种技术。在实现ORM框架时,需要定义对象和表之间的映射关系,并提供相应的API来进行数据库的增删改查操作。还需要处理对象之间的关联关系(如一对一、一对多等),并提供事务管理、缓存等功能。 其次,MVC(模型-视图-控制器)框架是一种用于开发Web应用程序的架构模式,将应用程序分为模型、视图和控制器三层。在实现MVC框架时,需要定义模型、视图和控制器的接口,并提供相应的实现。模型负责处理数据逻辑,视图负责展示用户界面,而控制器则负责接收用户请求并进行处理,最后将结果返回给视图进行展示。 最后,IOC(控制反转)框架是一种通过依赖注入来管理对象之间的依赖关系的技术。在实现IOC框架时,需要定义依赖注入的规则,并提供相应的实现。可以使用反射机制来自动实例化对象,并将依赖的对象注入到目标对象中。还需要提供对象的生命周期管理(如单例模式、原型模式等)和对象的配置方式(如XML配置、注解配置等)。 总结来说,自己动手实现ORM、MVCIOC框架需要掌握相关的技术和知识,并具备良好的设计和编码能力。除了理论知识外,还需要具备实际项目的经验,以便能够更好地设计和实现这些框架。同时,也需要不断学习和改进,跟上技术的发展潮流,以确保框架的高效和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飓风zj

感谢打赏,thanks

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值