標籤:
例子:
定義泛型Store
package javabased;public interface Store<T> {}
兩個實作類別StringStore,IntegerStore
package javabased;public class IntegerStore implements Store<Integer> {}
package javabased;public class StringStore implements Store<String> {}
java config實現bean配置
package javabased;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class StoreConfig {@Autowiredprivate Store<String> s1;@Autowiredprivate Store<Integer> s2;@Beanpublic StringStore stringStore() {return new StringStore();}@Beanpublic IntegerStore integerStore() {return new IntegerStore();}@Bean(name="test_generic")public String print(){ //測試System.out.println("s1 : "+s1.getClass().getName());System.out.println("s2 : "+s2.getClass().getName());return "";}}
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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"> <context:component-scan base-package="javabased"> </context:component-scan> </beans>
單元測試:
package javabased;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class UnitTest {@Testpublic void test(){ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-beanannotation.xml"); context.getBean("test_generic");}}
結果:
2015-7-8 15:12:04 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh資訊: Refreshing org[email protected]32bf7190: startup date [Wed Jul 08 15:12:04 CST 2015]; root of context hierarchy2015-7-8 15:12:04 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions資訊: Loading XML bean definitions from class path resource [spring-beanannotation.xml]s1 : javabased.StringStores2 : javabased.IntegerStore
也可參考(挺詳細的):http://blog.csdn.net/yangxt/article/details/19970323
Spring學習(16)--- 基於Java類的配置Bean 之 基於泛型的自動裝配(spring4新增)