【spring】蜕变(一)来源:慕课网

前言

学习了spring已经一年了,今天再加深一下理解。


课程目录

在这里插入图片描述


IOC(Inversion of Control):控制反转,依赖注入
  1. 控制是什么?

控制对象的反转和销毁

  1. 反转是什么?

将对象的控制权交给IOC容器


在spring之前(如果张三要坐车回家)

在这里插入图片描述


在这里插入图片描述


  1. 实现自己的IOC
public class IocContainer {
    private Map<String,Object> beans = new ConcurrentHashMap<String, Object>();

    /***
     * 根据beanId获取bean
     * @param beanId
     * @return
     */
    public Object getBean(String beanId){
        return beans.get(beanId);
    }

    public void setBean(Class<?> clazz, String beanId, String ... paramBeanIds){
        //初始化一个value数组
        Object[] paramValues = new Object[paramBeanIds.length];
        //给每个paramValues赋值
        for (int i = 0; i < paramValues.length; i++) {
            paramValues[i] = beans.get(paramBeanIds[i]);
        }
        //调用构造方法实例化bean
        for (Constructor<?> constructor : clazz.getConstructors()) {
            Object bean = null;
            try {
                bean= constructor.newInstance(paramValues);
            } catch (InstantiationException e) {
            } catch (IllegalAccessException e) {
            } catch (InvocationTargetException e) {
            }
            if (bean == null){
                throw new RuntimeException("实例化bean失败");
            }
            //把bean放入容器中
            beans.put(beanId,bean);
        }

    }
}
spring
  • spring ioc初体验
    在这里插入图片描述

使用spring实例化bean

  • 使用构造方法shi实例化bean
  • 通过静态方法实例化bean
  • 通过实例化方法实例化bean

给bean起别名

  • 在配置文件中bean有一个name属性,使用该属性能够起别名
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="bean1" class="com.wangyu.spring.Bean1" name="bean1-1,bean1-2">
    </bean>
    </beans>

在这里插入图片描述


注入bean的方法
在这里插入图片描述
这里构造方法注入和set方法注入就不做详细介绍了,这里强调一下构造方法注入和set方法注入的简便写法
添加头文件

       xmlns:c="http://www.springframework.org/schema/c"
       xmlns:p="http://www.springframework.org/schema/p"

之后我们就可以这么使用了

	<bean id="car" class="com.wangyu.domain.Car" c:color="绿色" c:name="保时捷"/>

    <bean id="man" class="com.wangyu.domain.Man" p:car-ref="car" p:name="小黑"/>

是不是方便很多呢


复习:

  1. 通过构造方法注入bean
    在这里插入图片描述
    在这里插入图片描述

  1. 通过set方法注入
    在这里插入图片描述
  2. 集合类型的注入
    在这里插入图片描述

在这里插入图片描述

  1. 注入内部bean
    在这里插入图片描述

github地址:https://github.com/1721461351/spring_study
今天就写到这里,明天继续


梦里相逢不见,若知是梦何须醒。纵然梦里常幽会,怎比真如见一回。

猜你喜欢

转载自blog.csdn.net/qq_41346335/article/details/88917122