手写一个简单的spring容器

67 阅读1分钟

创建简单的bean容器

主要是两个类,一个是beanDefinition,一个是beanFactory

img

  • BeanDefinition:bean的定义->主要的功能是存放bean对象
  • BeanFactory:bean工厂->主要是存放bean以及获取对应的bean

容器类关系

img_1.png

public class BeanDefinition {

    /**
     * bean
     */
    private final Object bean;

    public BeanDefinition(Object bean) {
        this.bean = bean;
    }

    public Object getBean() {
        return bean;
    }

}
public class BeanFactory {

    private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>();

    public Object getBean(String name) {
        return beanDefinitionMap.get(name).getBean();
    }

    public void registerBeanDefinition(String name, BeanDefinition beanDefinition) {
        beanDefinitionMap.put(name, beanDefinition);
    }

}

测试类

public class UserService {
    public void queryUserInfo(){
        System.out.println("查询到用户信息了");
    }
}
public class ApiTest {

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

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

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

    }
}