依赖注入类型

依赖注入类型配置元数据举例
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();    }}

输入

入门小站

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