Spring 自動綁定(Autowiring)模式

依賴注入類型

依賴注入類型 配置元數據舉例
Setter 方法 <proeprty name="user" ref="userBean"/>
構造器 <constructor-arg name="user" ref="userBean" />
字段 @Autowired User user;
方法 @Autowired public void user(User user) { ... }
接口回調 class MyBean implements BeanFactoryAware { ... }

自動綁定(Autowiring)模式

自動綁定主要在xml模式下使用
模式 說明
no 默認值,未激活 Autowiring,須要手動指定依賴注入對象。
byName 根據被注入屬性的名稱做爲 Bean 名稱進行依賴查找,並將對象設置到該 屬性。
byType 根據被注入屬性的類型做爲依賴類型進行查找,並將對象設置到該屬性。
constructor 特殊 byType 類型,用於構造器參數。

Setter 方法注入(自動模式)

  • ByName 經過名稱
  • ByType 經過類型

ByName 經過名稱

配置文件Beans.xmlhtml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">


    <bean id="rumenz" class="com.rumenz.Rumenz">
        <property name="id" value="123"/>
        <property name="name" value="入門小站"/>
    </bean>
    <bean id="holder" class="com.rumenz.Holder"  autowire="byType">
    </bean>
</beans>

調用java

package com.rumenz;

public class DemoApplication {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext ca=new ClassPathXmlApplicationContext("Beans.xml");
        ca.refresh();
        Holder bean1 = ca.getBean(Holder.class);
        System.out.println(bean1.getRumenz().getName());
        ca.close();
    }


}

輸出spring

入門小站

ByType 經過類型

配置文件Beans.xmlspa

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">


    <bean id="rumenz" class="com.rumenz.Rumenz">
        <property name="id" value="123"/>
        <property name="name" value="入門小站"/>
    </bean>
    <bean id="holder" class="com.rumenz.Holder"  autowire="byType">
    </bean>
</beans>

調用code

package com.rumenz;

public class DemoApplication {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext ca=new ClassPathXmlApplicationContext("Beans.xml");
        ca.refresh();
        Holder bean1 = ca.getBean(Holder.class);
        System.out.println(bean1.getRumenz().getName());
        ca.close();
    }


}

輸出xml

入門小站

WechatIMG8.png

原文: https://rumenz.com/rumenbiji/Spring-autowiring-model.htmlhtm

相關文章
相關標籤/搜索