Skip to content
/ ioc Public

The java ioc framework(从零开始手写模拟 spring Ioc 框架)

License

Notifications You must be signed in to change notification settings

houbb/ioc

This branch is 27 commits behind master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5b0f047 · Nov 26, 2019

History

41 Commits
Nov 26, 2019
Nov 26, 2019
Nov 6, 2019
Nov 6, 2019
Nov 6, 2019
Nov 26, 2019
Nov 6, 2019
Nov 13, 2019
Nov 6, 2019
Nov 6, 2019
Nov 26, 2019
Nov 26, 2019
Nov 6, 2019
Nov 6, 2019

Repository files navigation

IoC

Ioc 是一款 spring ioc 核心功能简化实现版本,便于学习和理解原理。

Maven Central Coverage Status

定义

控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。

其中最常见的方式叫做依赖注入(Dependency Injection,简称DI)。

通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。

也可以说,依赖被注入到对象中。

创作目的

使用 spring 很长时间,对于 spring 使用非常频繁,实际上对于源码一直没有静下心来学习过。

但是 spring 源码存在一个问题,那就是过于抽象,导致学习起来成本上升。

所以本项目由渐入深,只实现 spring 的核心功能,便于自己和他人学习 spring 的核心原理。

快速开始

maven 引入

<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>ioc</artifactId>
    <version>最新版本</version>
</dependency>

测试准备

全部测试代码,见 test 模块。

  • Apple.java
public class Apple {

    public void color() {
        System.out.println("Apple color: red. ");
    }

}
  • apple.json

类似于 xml 的配置,我们暂时使用 json 进行配置验证。

[
{"name":"apple","className":"com.github.houbb.ioc.test.service.Apple"}
]

执行测试

  • 测试
BeanFactory beanFactory = new JsonApplicationContext("apple.json");
Apple apple = (Apple) beanFactory.getBean("apple");
apple.color();
  • 日志
Apple color: red.

分支说明

v0.0.1-BeanFactory 基本实现

v0.0.2-ListBeanFactory 基本实现

v0.0.3-单例和延迟加载

v0.0.4-初始化和销毁方法

v0.0.5-RespCode 添加和代码优化

v0.0.6-构造器和 factoryMethod 新建对象

v0.0.7-property 属性设置

v0.0.8-Aware 监听器及 PostProcessor

v0.0.9-Parent 属性继承

v0.1.0-循环依赖检测

拓展阅读

Java IOC-00-ioc 是什么

About

The java ioc framework(从零开始手写模拟 spring Ioc 框架)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published