ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring学习笔记(1)实现简单的Bean容器

2022-08-26 15:05:02  阅读:169  来源: 互联网

标签:容器 java BeanFactory Spring bean Bean public BeanDefinition


github地址

代码目录结构

small-spring-step-01
└── src
    ├── main
    │   └── java
    │       └── cn.bugstack.springframework
    │           ├── BeanDefinition.java
    │           └── BeanFactory.java
    └── test
        └── java
            └── cn.bugstack.springframework.test  
                ├── bean
                │   └── UserService.java                
                └── ApiTest.java

定义BeanDefinition

用一个Object存放Bean对象

public class BeanDefinition {

    private Object bean;

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

    public Object getBean() {
      return bean;
    }

}

定义Bean工厂

包括Bean的注册和获取操作

public class BeanFactory {

    private 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);
    }
}

测试

定义了一个 UserService 对象

public class UserService {

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

}

测试用例

@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();
}

成功初始化Bean工厂, 注册Bean, 获取Bean, 这样就实现了一个最简单的Bean容器

标签:容器,java,BeanFactory,Spring,bean,Bean,public,BeanDefinition
来源: https://www.cnblogs.com/haoqirui/p/16627522.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有