Spring In Action ③

第三章  最小化Spring xml配置

自动装配(autowiring)

自动检测(autodiscovery)

 

自动装配

byName、byType、constructor

autodetect(首先constructor,然后byType)

<bean id=.....   autowire="constructor"/>



<bean id=....   primary="true"/> <!-- 首选项bean-->

<bean id=....   autowire-candidate="false"/> <!-- 不作为候选bean进行装配-->

默认自动装配 (default-autowire默认为none,不进行自动装配)

<beans  xmlns=...................

     .......................

     default-autowire="byType">



...........

</beans>

使用注解装配

Spring默认禁用注解装配,需在context命名空间配置如下:

<context:annotation-config/>

①: 自带的@Autowired  属性 方法 构造器(required=false)

②: @Injects 没有required属性,注解依赖关系必须存着

③: @Resource

 

@Qualifier 与 @autowired配合使用,指定特定id的bean,可以理解为将autowired的默认byType更改为byName。

qualifier也可以修饰bean,进行归类管理。

@Qualifier("stringed")

public class Guitar implements Instrument {

....

}



@Qualifier("stringed")

public class Violin implements Instrument {

....

}



******************************************



当使用自动注入的时候

@Autowired

@Qualifier("stringed")

private Instrument instruments;

 

创建自定义的限定器(Qualifier)

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;



import org.springframework.beans.factory.annotation.Qualifier;



@Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Qualifier

public @interface StringedInstrument {



}

 

@Inject 对应@Named,类似@Autowired对应@Qualifier.

你可能感兴趣的:(spring)