自己动手写框架——IoC的实现】的更多相关文章

先看看 IoC百度百科 优化过程 namespace Test { class Program { static void Main(string[] args) { //场景 某公司客服要回访一些客户 //刚开始 回访的方式只有 打电话 //简单的实现 CustomerService1 cs1 = new CustomerService1(); cs1.Call(); } } public class CustomerService1 { public string Call() { retu…
功能说明 该步骤实现的功能包括: 1. 启动程序时,将@ComponentScan加载的类,创建对象并放在容器里面. 2. 通过ApplicatoinContext的getBean()方法获得容器里面的对象. (放在下一篇文实现) 实现步骤 1.定义一个扫描注解@ComponentScan package ioc.core.annotation; import java.lang.annotation.Documented; import java.lang.annotation.Element…
Ioc内核要解决的问题 1.被调用方,在程序启动时就要创建好对象,放在一个容器里面. 2.调用方使用一个接口或类的引用(不用使用new),就可以创建获得对象. 解决这个两个问题的思路 1.定义一个对象容器,用于存储所有的创建的对象. 2.给启动程序时就需要创建对象并放在容器里面的类一个标识,我称为组件注解. 根据三层架构的定义:组件注解分别为 @Controller:表示层的类 @Service:服务层的类 @Repository:持久层的类 @Component:三层架构以外的类 3.定义一个…
实现功能 --前面实现的代码-- 默认的对象名就类名.不符合Java的命名规范.我们希望默认的对象名首字母小写. 实现思路 创建一个命名规则的帮助类.实现将对大写开头的对象名修改为小写开头. 实现步骤 1.创建一个命名规则帮助类 package ioc.core.utils; /** * 创建命名规则帮助类 * * @author ranger * */ public class NamingUtils { /** * 将类名修改为对象名,首字母小写 * * @param className *…
实现功能 以上的代码我们发现.我们都是将@ComponentScan扫描的路径下的所有类都加载到容器中的. 而实际需求,我们并不希望所有的类都创建对象,而是加了组件注解@Controller,@Service,@Repository,@Component的类才创建对象 而不加这些标识的类不需要创建对象. 所谓本章就是实现通过组件注解限制哪些类是可以创建对象的,哪些是不可以的. 实现思路 根据获得的类全限制名,获得它的Class对象.通过Class对象判断类的声明上是否有组件注解.有就创建对象,没…
实现的功能 1. 启动程序时,将@ComponentScan加载的类,创建对象并放在容器里面.(查看上一篇文) 2. 通过ApplicatoinContext的getBean()方法获得容器里面的对象. (1)使用getBean("对象名")返回的对象都Object类型 (2)使用getBean("对象名",<对象类型>),返回指定类型的对象 思路说明 在上面的代码的基础上,在AbstractApplicationContext抽象类实现getBean的…
因为工作关系.须要工作其中,须要读取DBF文件.找了一些DBF读取开源软件,要么是太过庞大,动不动就上万行.要么是功能有问题,编码,长度,总之是没有找到一个很爽的. 在万般无奈之下,我老人家怒从心头起,恶向胆边生.决定自己写一下. 结果仅仅用了不到300行代码就搞定了,当然搞定不是唯一目标,还要优雅简洁的搞定,亲们尾随我的脚步一起感受一下简洁的设计与实现吧. 在開始编码之前.先介绍一下DBF.这个DBF可是个老东西.在DOS时代就已经出现,而且风骚了相当一段时间.后来随着大型数据库的应用,它逐步…
实现功能 1.我们看到@ComponentScan注解一个开始定义就是需要支持,扫描多个包,将多个包的类名获取到.现在就实现这个功能. 实现思路 根据传入的字符串数组,获得多个包下的类全限制名. 实现步骤 --基于之前的代码-- 1.在PackageUtils.增加一个扫描多个包的方法 /** * 支持同时扫描多个包的路径下的类全限制名以及其子包的所有类的全限制名 包名直接使用逗号分割 * * @param packageNames:传入多个包名 * @param isRecursion:是否扫…
对于一名Java开发人员,我相信没有人不知道 Spring 框架,而且也能够轻松就说出 Spring 的特性-- IOC.MVC.AOP.ORM(batis). 下面我想简单介绍一下我写的轻量级的 Spring 框架(swift-framework),并且进行核心逻辑的分析,和使用说明. 提示:以下有大量图片,可以在新页面查看图片. 目录: 自己动手写Spring框架--IOC.MVC -- 怎么使用 swift-framework 框架 -- 跟着 debug 走流程 自己动手写Spring框…
钻研Spring 源码也有一段时间了,对Spring IoC的实现原理理解算是比较透彻了,要实现一款IoC容器,简单的概括无非需要以下几个步骤: 1.定义用来描述bean的配置的Java类,例如我们有下面的配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans> <bean id="person2" class="com.csii.test.pojo.Pers…