首页 > 其他分享 >Spring学习笔记(1)实现简单的Bean容器

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

时间:2022-08-26 14:57:00浏览次数:78  
标签:容器 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
From: https://www.cnblogs.com/haoqirui/p/16627522.html

相关文章

  • SpringMVC 使用注解时路径找不到
    SpringMVC注解路径找不到今天在使用SpringMVC时偶然遇到了跳转404的问题,于是决定记录下来启动后输入@RequestMapping("/login")注解里的login后跳转404可能问题:spr......
  • 使用函数计算自定义运行时快速部署一个 SpringBoot 项目 | 文末有礼
    作者:谱一段风华笔墨什么是函数计算阿里云函数计算FC是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码。函数计算为您准......
  • Spring Boot 2.x基础教程:进程内缓存的使用与Cache注解详解
    随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一。Spring3开......
  • Spring Boot 2.x基础教程:EhCache缓存的使用
    在SpringBoot中通过@EnableCaching注解自动化配置合适的缓存管理器(CacheManager),SpringBoot根据下面的顺序去侦测缓存提供者:GenericJCache(JSR-107)(EhCache3,Haze......
  • Spring+Vue实现token登录
    原文链接前端代码:https://github.com/Snowstorm0/token-login-vue后端代码:https://github.com/Snowstorm0/token-login-spring使用Spring+Vue实现token登录、退出、......
  • Spring Data 测试时的 Repository 提示为空对象
    错误信息如下:java.lang.NullPointerException atcom.usvisatrack.common.data.tests.jpa.UserRepositoryTest.testInsert(UserRepositoryTest.java:57) atjava.base/j......
  • spring源码
    spring框架生态spring包含两个点IOC:控制反转原来创建对象的时候需要我们自己去new但是用spring容器帮我们创建我们需要的时候直......
  • springMVC RequestMapping
    1.可以加在类上用于模块2.可以加在方法上用于路径 packagecom.cj.mvc.controller;importorg.springframework.stereotype.Controller;importorg.springframew......
  • 部署ELK及kafka日志收集k8s容器环境
    部署zookeeper      准备三个节点系统并安装jdk       结构图:官网下载地址:   https://zookeeper.apache.org/releases.html  安装JDK环......
  • Spring Bean 详解
    SpringBean详解Ioc实例化Bean的三种方式1创建Bean1使用无参构造函数这也是我们常用的一种。在默认情况下,它会通过反射调⽤⽆参构造函数来创建对象。如果类中没有......