学习笔记-Spring实战-动手实现一个小的spring-Chapter-1

学习笔记-Spring实战-动手实现一个小的spring-Chapter-1

1、思考

Spring是什么?有什么用?存储结构?

Spring是一个存放bean容器,bean即java里面的各种对象,容器即存放这些对象的地方。

有什么用,借助Spring我们在写代码需要用到一些对象的时候 不需要自己去创建,直接从spring容器中拿取即可

spring可以妥善处理好我们需要对象的生命周期(创建销毁等)以及对象的依赖的其他对象。

存储结构,既然是对象的容器,为了可以方便的获取对象 使用map来存储是最好的。

2、本章目标

简单创建一个spring的容器,可以从容器里面获取对象并且可以向容器里面注册(存放)对象

3、设计

spring容器

4、实现

BeanDefinition:定义Bean的信息

package ioc;

/**
 * @author LiWenQiang
 * @description bean定义
 * @date 2022-03-02 16:56
 */
public class BeanDefinition {

    private Object bean;

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

    public Object getBean() {
        return bean;
    }
}

BeanFactory:Bean容器

package ioc;

import java.util.HashMap;

/**
 * @author LiWenQiang
 * @description
 * @date 2022-03-02 16:56
 */
public class BeanFactory {
    private HashMap<String,BeanDefinition> beanFactory = new HashMap<>();

    public Object getBean(String beanName){
        return beanFactory.get(beanName).getBean();
    }

    public void registBeanDefinition(String beanName,BeanDefinition beanDefinition){
        beanFactory.put(beanName,beanDefinition);
    }
}

Bean容器定义了Bean的注册和获取方法,Bean定义定义了对象

5、验证

package ioctest;

import ioc.BeanDefinition;
import ioc.BeanFactory;
import org.junit.Test;

/**
 * @author LiWenQiang
 * @description
 * @date 2022-03-02 17:05
 */
public class IocTest {
    @Test
    public void testIOC1(){
        //创建IOC容器
        BeanFactory beanFactory = new BeanFactory();

        //注册一个bean进去
        beanFactory.registBeanDefinition("userService",new BeanDefinition(new UserService()));

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

        //调用方法测试
        userService.queryUserInfo();
    }
}

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

输出:查询用户信息

说明可以对Bean容器进行对象注册和获取

6、遗留问题

1、没用兼容单例对象(单例对象的创建 应该要缓存起来,下次直接获取)

2、对象的创建是调用方自己创建的,这个动作应该交给容器去做

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值