<bean class="org.springframework.beans.factory.annotation. AutowiredAnnotationBeanPostProcessor" />
或者在配置文件中配置<context:annotation-config>:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:annotation-config /> ... </beans>
配置<context:annotation-config>後,容器會自動註冊AutowiredAnnotationBeanPostProcessor。
public class SequenceGenerator { ... ... @Autowired public void setPrefixGenerator(PrefixGenerator prefixGenerator) { this.prefixGenerator = prefixGenerator; } }
配置文件:
<beans ...> ... ... <bean id="sequenceGenerator" class="com.apress.springrecipes.sequence.SequenceGenerator"> <property name="initial" value="100000" /> <property name="suffix" value="A" /> </bean> <bean id="datePrefixGenerator" class="com.apress.springrecipes.sequence.DatePrefixGenerator"> <property name="pattern" value="yyyyMMdd" /> </bean> </beans>
容器會自動尋找PrefixGenerator類型的bean,並注入到 setPrefixGenerator函數中。
public class SequenceGenerator { @Autowired private PrefixGenerator[] prefixGenerators; ... ... }
配置文件:
<beans ...> ... <bean id="datePrefixGenerator" class="com.apress.springrecipes.sequence.DatePrefixGenerator"> <property name="pattern" value="yyyyMMdd" /> </bean> <bean id="yearPrefixGenerator" class="com.apress.springrecipes.sequence.DatePrefixGenerator"> <property name="pattern" value="yyyy" /> </bean> </beans>
List:
public class SequenceGenerator { @Autowired private List<PrefixGenerator> prefixGenerators; ... ... }
Map:
public class SequenceGenerator { @Autowired private Map<String, PrefixGenerator> prefixGenerators; ... ... }
public class SequenceGenerator { @Autowired @Qualifier("datePrefixGenerator") private PrefixGenerator prefixGenerator; ... ... }
配置文件:
<bean class="com.apress.springrecipes.sequence.DatePrefixGenerator"> <qualifier value="datePrefixGenerator"/> <property name="pattern" value="yyyyMMdd" /> </bean>
能夠在函數的參數上使用@Qualifier註解:java
public class SequenceGenerator { ... @Autowired public void inject( @Qualifier("datePrefixGenerator") PrefixGenerator prefixGenerator) { this.prefixGenerator = prefixGenerator; } }
@Target({ElementType.FIELD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Qualifier public @interface Generator{ String value(); }
bean:
public class SequenceGenerator { @Autowired @Generator("prefix") private PrefixGenerator prefixGenerator; ... ... }
配置文件:
<bean id="datePrefixGenerator" class="com.apress.springrecipes.sequence.DatePrefixGenerator"> <qualifier type="Generator" value="prefix" /> <property name="pattern" value="yyyyMMdd" /> </bean>
public class SequenceGenerator { @Resource(name = "datePrefixGenerator") private PrefixGenerator prefixGenerator; ... ... }使用@Resource註解,必須添加JSR-250的依賴或者jar包。