【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
今天就寫到這裏,明天繼續


夢裏相逢不見,若知是夢何須醒。縱然夢裏常幽會,怎比真如見一回。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章