chapter01_最简单的Bean容器

一、Spring的本质

  • Spring的本质就是一个对象工厂,也可以称为Bean工厂,负责生产Bean
  • 有了Bean工厂,以后我们就不需要再new对象,而是直接向工厂索取

二、Bean定义

  • 工厂生产商品,需要图纸,根据图纸生产商品
  • 而Bean定义,就是Bean的图纸
  • 一个Bean必须先要将定义注册到Bean工厂,才能进行后续的创建
  • 类对象,最适合最为图纸,可以通过反射创建Bean

在这里插入图片描述

三、代码实现

新建BeanDefinition类

  • 提供一个关键属性,Class beanClass
  • 提供get ,set ,构造方法
public class BeanDefinition {

    private Class beanClass;

    public BeanDefinition(Class beanClass) {
        this.beanClass = beanClass;
    }

    public Class getBeanClass() {
        return beanClass;
    }

    public void setBeanClass(Class beanClass) {
        this.beanClass = beanClass;
    }
}

新建BeanFactory类

  • 提供一个Map,维护所有的Bean定义
  • 提供获取Bean方法
  • 提供注册Bean方法
public class BeanFactory {

    /**
     * 存放所有的Bean定义
     */
    private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>();

    /**
     * BeanFactory的核心方法,从中获取一个Bean
     *
     * @param name bean的名称
     * @return Object类型的对象
     */
    public Object getBean(String name) throws InstantiationException, IllegalAccessException {
        return beanDefinitionMap.get(name).getBeanClass().newInstance();
    }

    /**
     * 注册Bean定义
     * @param name
     * @param beanDefinition
     */
    public void registerBeanDefinition(String name, BeanDefinition beanDefinition) {
        beanDefinitionMap.put(name, beanDefinition);
    }

}

提供Bean类,UserService

public class UserService {

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

}

测试类

  • 新建一个Bean工厂
  • 注册Bean
  • 获取Bean
public class ApiTest {

    @Test
    public void test_BeanFactory() throws InstantiationException, IllegalAccessException {
        // 1.初始化 BeanFactory
        BeanFactory beanFactory = new BeanFactory();

        // 2.注册 bean
        BeanDefinition beanDefinition = new BeanDefinition(UserService.class);
        beanFactory.registerBeanDefinition("userService", beanDefinition);

        // 3.获取 bean
        UserService userService = (UserService) beanFactory.getBean("userService");
        userService.queryUserInfo();
    }
}

测试结果

查询用户信息成功

四、总结

Bean工厂,最重要的两个方法

  • 注册Bean
  • 获取Bean

Bean工厂,最重要的一个属性

  • Map,存储所有的Bean定义
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值