Spring-自动绑定Autowiring模式

7次阅读

共计 2329 个字符,预计需要花费 6 分钟才能阅读完成。

依赖注入类型

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

正文完
 0