本专栏带领大家手写一遍spring的核心代码,包括IOC,AOP,三级缓存...
第一节较为简单,后面的章节会逐渐提升代码量和复杂度,喜欢的同学记得订阅哦  ̄▽ ̄

定义一个简单的bean容器BeanFactory,内部包含一个map用以保存bean,包含注册bean和获取bean两个方法

BeanFactory

public class BeanFactory {
private Map<String,Object> beanContext = new HashMap<>(); public Object getBean(String name){
return beanContext.get(name);
} /**
* 所谓注册bean,就是将bean放入容器
* @param name
* @param bean
*/
public void registerBean(String name,Object bean){
beanContext.put(name,bean);
}
}

测试

public class SimpleBeanContainerTest {
@Test
public void test() {
BeanFactory beanFactory = new BeanFactory();
beanFactory.registerBean("userService", new UserService());
UserService userService = (UserService)beanFactory.getBean("userService") ;
userService.sayHello();
}
class UserService{
public void sayHello(){
System.out.println("helloWord");
}
}
}

测试结果

helloWord

Process finished with exit code 0

[源码系列:手写spring] IOC第一节:简单bean容器的更多相关文章

  1. 《四 spring源码》手写springioc框架

    手写SpringIOCXML版本 /** * 手写Spring专题 XML方式注入bean * * * */ public class ClassPathXmlApplicationContext { ...

  2. 框架源码系列十:Spring AOP(AOP的核心概念回顾、Spring中AOP的用法、Spring AOP 源码学习)

    一.AOP的核心概念回顾 https://docs.spring.io/spring/docs/5.1.3.RELEASE/spring-framework-reference/core.html#a ...

  3. 从零开始手写 spring ioc 框架,深入学习 spring 源码

    IoC Ioc 是一款 spring ioc 核心功能简化实现版本,便于学习和理解原理. 创作目的 使用 spring 很长时间,对于 spring 使用非常频繁,实际上对于源码一直没有静下心来学习过 ...

  4. Spring源码分析 手写简单IOC容器

    Spring的两大特性就是IOC和AOP. IOC Container,控制反转容器,通过读取配置文件或注解,将对象封装成Bean存入IOC容器待用,程序需要时再从容器中取,实现控制权由程序员向程序的 ...

  5. 框架源码系列六:Spring源码学习之Spring IOC源码学习

    Spring 源码学习过程: 一.搞明白IOC能做什么,是怎么做的  1. 搞明白IOC能做什么? IOC是用为用户创建.管理实例对象的.用户需要实例对象时只需要向IOC容器获取就行了,不用自己去创建 ...

  6. 《四 spring源码》手写springmvc

    手写SpringMVC思路 1.web.xml加载  为了读取web.xml中的配置,我们用到ServletConfig这个类,它代表当前Servlet在web.xml中的配置信息.通过web.xml ...

  7. Spring源码 20 手写模拟源码

    参考源 https://www.bilibili.com/video/BV1tR4y1F75R?spm_id_from=333.337.search-card.all.click https://ww ...

  8. 利用递归,反射,注解等,手写Spring Ioc和Di 底层(分分钟喷倒面试官)了解一下

    再我们现在项目中Spring框架是目前各大公司必不可少的技术,而大家都知道去怎么使用Spring ,但是有很多人都不知道SpringIoc底层是如何工作的,而一个开发人员知道他的源码,底层工作原理,对 ...

  9. Spring源码剖析3:Spring IOC容器的加载过程

    本文转自五月的仓颉 https://www.cnblogs.com/xrq730 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https ...

  10. Spring源码剖析2:Spring IOC容器的加载过程

    spring ioc 容器的加载流程 1.目标:熟练使用spring,并分析其源码,了解其中的思想.这篇主要介绍spring ioc 容器的加载 2.前提条件:会使用debug 3.源码分析方法:In ...

随机推荐

  1. CDS标准视图:银行对账单行项目 I_BankStatementItem

    视图名称:银行对账单行项目 I_BankStatementItem 视图类型:基础视图 视图代码: 点击查看代码 @AbapCatalog.sqlViewName: 'IBANKSTATMENTITM ...

  2. Java技术栈总结-提升

    1 java基础: 1.1 算法 1.1 排序算法:直接插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序 1.2 二叉查找树.红黑树.B树.B+树.LSM树(分别有对应 ...

  3. Redisson实现分布式锁---原理

    Redisson实现分布式锁(1)---原理 有关Redisson作为实现分布式锁,总的分3大模块来讲. 1.Redisson实现分布式锁原理 2.Redisson实现分布式锁的源码解析 3.Redi ...

  4. Codeforces Round 961 (Div. 2)

    题目链接:Codeforces Round 961 (Div. 2) 总结:B1wa两发可惜,C出得有点小慢. A. Diagonals fag:贪心 Description:给定一个\(n * n\ ...

  5. 第1章 C#和.NET Framework简介

    第1章 C#和.NET Framework简介 1.6 CLR 和 .NET Framework .NET Framework 由 CLR 和大量程序库组成.这些程序库由核心库和应用库组成,应用库依赖 ...

  6. 在阿里云ECS上一键部署DeepSeek-R1

    DeepSeek-R1 是一款开源模型,也提供了 API(接口)调用方式.据 DeepSeek介绍,DeepSeek-R1 后训练阶段大规模使用了强化学习技术,在只有极少标注数据的情况下提升了模型推理 ...

  7. CF607B Zuma 题解

    CF607B Zuma 不知道为什么你谷会评蓝,这不是很基础的区间DP吗. Problem - 607B - Codeforces 题意简述 消除回文子串的最小次数. 思路 对于区间\([i,j]\) ...

  8. 记录一次WPF程序进程挂起问题

    ## 1. 使用背景 开发`WPF`单进程项目,在项目中使用`MongoDB`数据库,需要连接多个不同的数据库实例,另外项目框架采用了事件聚合器来管理模块间的通知调用,基于`NetMQ`实现了一个`Z ...

  9. Git 远程仓库地址修改了怎么办?

    项目迁移了一波仓库地址,从自建的git-lab到gitee,所以远程仓库地址发生了变更. 命令: git remote -v # 查看本地配置的远程仓库地址,针对下图中的origin,有的人起名字可能 ...

  10. Kubernetes - [03] 安装部署

    Kubeadm 部署k8s集群 一.准备工作 1.1.组件 组件:Harbor(私有Docker Hub).Router 服务器操作系统:Centos7 +(内核3.0+,最好内核4.40+) 1.2 ...