Spring使用注解装配

  • Post author:
  • Post category:其他

一、xml配置

在Spring配置xml中增加

<context:annotation-config /> 元素,表示要基于注解进行自动装配

二、自动配置注解及使用

支持的自动装配注解有:

@Autowired Spring自带的注解

@Inject         JSR-330的注解,和@Autowired类似

@Resource JSR-250的注解

使用

1、将自动装配注解标注在需要装配的setter方法或者字段上(还有其他用法),即可进行自动装配

当Spring发现我们对某个地方进行@Autowired 注解后,便会尝试进行byType自动装配。

2、required=false

当没有合适的bean可以注入的时候可以选择 @Autowired(required=false)

3、限定性依赖@Qualifier

当有多个合适的bean可以注入的时候可以使用@Qualifier限定注入哪个bean

@Autowired
@Qualifier(“guitar”)

三、示例代码

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:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
			http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

	<context:annotation-config /> 
 
	<bean id="counter" class="SpringStudy.Model.Counter">
		<property name="multiplier" value="#{T(java.lang.Math).random()}" />
		<property name="equals" value="#{not (1 lt 2)}" />
		<!-- 等同于Counter.song!=null?Counter.song:'Sugar' -->
		<property name="song" value="#{counter.song?:'Sugar'}" />
	</bean>
	<bean id="piano" class="SpringStudy.Model.Piano">
		<property name="name" value="piano" />
		<property name="sound" value="Dalala" />
	</bean>
	<bean id="guitar" class="SpringStudy.Model.Guitar">
		<property name="name" value="guitar" />
		<property name="sound" value="talalala" />
	</bean>
</beans>

Counter类

package SpringStudy.Model;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
public class Counter {
	public  Counter() {
	}

	public  Counter(double multiplier, String song,Instrument instrument) {
		this.multiplier = multiplier;
		this.song = song;
		this.instrument=instrument;
	}

	private double multiplier;

	private boolean equals;

	private String song;
        @Autowired(required=false)
	@Qualifier("guitar")
	private Instrument instrument;

	public double getMultiplier() {
		return multiplier;
	}

	public void setMultiplier(double multiplier) {
		this.multiplier = multiplier;
	}

	public boolean isEquals() {
		return equals;
	}

	public void setEquals(boolean equals) {
		this.equals = equals;
	}

	public String getSong() {
		return song;
	}

	public void setSong(String song) {
		this.song = song;
	}

	public Instrument getInstrument() {
		return instrument;
	}

	public void setInstrument(Instrument instrument) {
		this.instrument = instrument;
	}

}

Piano类代码参考

http://blog.csdn.net/vvhesj/article/details/47661001


版权声明:本文为vvhesj原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。