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

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Spring 自动绑定(Autowiring)模式

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址