zoukankan      html  css  js  c++  java
  • Spring Autowiring by Name

    In Spring, “Autowiring by Name” means, if the name of a bean is same as the name of other bean property, auto wire it.

    For example, if a “customer” bean exposes an “address” property, Spring will find the “address” bean in current container and wire it automatically. And if no matching found, just do nothing.

    You can enable this feature via autowire="byName" like below :

    	<!-- customer has a property name "address" -->
    	<bean id="customer" class="com.mkyong.common.Customer" autowire="byName" />
    	
    	<bean id="address" class="com.mkyong.common.Address" >
    		<property name="fulladdress" value="Block A 888, CA" />
    	</bean>
    

    See a full example of Spring auto wiring by name.

    1. Beans

    Two beans, customer and address.

    package com.mkyong.common;
     
    public class Customer 
    {
    	private Address address;
    	//...
    }
    
    package com.mkyong.common;
     
    public class Address 
    {
    	private String fulladdress;
    	//...
    }
    

    2. Spring Wiring

    Normally, you wire the bean explicitly, via ref attribute like this :

    	<bean id="customer" class="com.mkyong.common.Customer" >
    		<property name="address" ref="address" />
    	</bean>
    	
    	<bean id="address" class="com.mkyong.common.Address" >
    		<property name="fulladdress" value="Block A 888, CA" />
    	</bean>
    

    Output

    Customer [address=Address [fulladdress=Block A 888, CA]]
    

    With autowire by name enabled, you do not need to declares the property tag anymore. As long as the “address” bean is same name as the property of “customer” bean, which is “address”, Spring will wire it automatically.

    	<bean id="customer" class="com.mkyong.common.Customer" autowire="byName" />
    	
    	<bean id="address" class="com.mkyong.common.Address" >
    		<property name="fulladdress" value="Block A 888, CA" />
    	</bean>
    

    Output

    Customer [address=Address [fulladdress=Block A 888, CA]]
    

    See another example, this time, the wiring will failed, caused the bean “addressABC” is not match the property name of bean “customer”.

    	<bean id="customer" class="com.mkyong.common.Customer" autowire="byName" />
    	
    	<bean id="addressABC" class="com.mkyong.common.Address" >
    		<property name="fulladdress" value="Block A 888, CA" />
    	</bean>
    

    Output

    Customer [address=null]
    
  • 相关阅读:
    android bluetooth 蓝牙4.0 +HC-08模块
    android 调用默认浏览器 打开指定网页
    checkSelfPermission 找不到 Android 动态权限问题
    C# 使用 USB转串 接收数据 问题
    Mysql 保留最新的10条数据
    Android Fragment 开发(一)
    python IP地址转16进制
    Android Socket 遇到的Soure Not Find 错误
    Linux 修改时区 不用重启
    XML Publisher 并发程序由于 输出提交处理程序提交失败
  • 原文地址:https://www.cnblogs.com/ghgyj/p/4749926.html
Copyright © 2011-2022 走看看