转载

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.xml

<?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>

调用

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();
    }


}

输出

入门小站

ByType 通过类型

配置文件Beans.xml

<?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>

调用

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 自动绑定(Autowiring)模式

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

原文  https://segmentfault.com/a/1190000023248974
正文到此结束
Loading...