手撸spring01: 创建简单Bean容器

spring是怎么去管理bean的呢?学习一下手撸spring.

第一步先来简单的实现一个Bean容器的注册与获取

所谓容器就是能够存储元素的结构就是容器, 例如List, Set 和Map

在Spring Bean容器的场景下, 需要存放名称为索引的数据结构, HashMap就是个合适的选择, 工厂模式一般也都是这么搞的.

先画个图
在这里插入图片描述

那个Bean没有那么重要,第一步先来创建BeanDefinition,因为是简单版,一开始就只有一个bean,后续会慢慢加入其他的属性

/**
 * 定义一个bean
 */
@Data
@AllArgsConstructor
public class BeanDefinition {
    private Object bean;
}

然后是bean工厂, 一个是容器, 然后就是注册和获取方法

/**
 * bean工厂
 */
public class BeanFactory {
    /**
     * bean容器
     */
    private Map<String,BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>();

    /**
     * 通过定义类获取其中的bean
     * @param beanName
     * @return
     */
    public Object getBean(String beanName){
       return beanDefinitionMap.get(beanName).getBean();
    }

    /**
     * 注册一个bean的定义类
     * @param beanName
     * @param beanDefinition
     */
    public void registerBeanDefinition(String beanName, BeanDefinition beanDefinition){
        beanDefinitionMap.put(beanName,beanDefinition);
    }
}

然后是简单的bean

public class UserService {

    public void queryUserInfo(){
        System.out.println("查询用户信息");
    }
}

然后我们来简单的走一下流程

@Test
public void test1(){
    //创建bean工厂
    BeanFactory beanFactory = new BeanFactory();

    //定义一个UserService
    BeanDefinition beanDefinition = new BeanDefinition(new UserService());

    //将定义注册到bean工厂中
    beanFactory.registerBeanDefinition("userService",beanDefinition);

    //通过bean名 到工厂中获取bean
    UserService userService = (UserService) beanFactory.getBean("userService");

    userService.queryUserInfo();
}

这就是简单的一个bean管理容器的过程了, 可以很容易的去了解一下其流程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值