泛型依赖注入
BaseRepository.java
packagecom.spring.beans.generic.di;publicclassBaseRepository<T>{}
BaseService.java
packagecom.spring.beans.generic.di;importorg.springframework.beans.factory.annotation.Autowired;publicclassBaseService<T>{@AutowiredprotectedBaseRepository<T>baseRepository;publicvoidadd(){System.out.println("add...");System.out.println(baseRepository);}}
UserRepository.java
packagecom.spring.beans.generic.di;importorg.springframework.stereotype.Repository;@RepositorypublicclassUserRepositoryextendsBaseRepository<User>{}
UserService.java
packagecom.spring.beans.generic.di;importorg.springframework.stereotype.Service;@ServicepublicclassUserServiceextendsBaseService<User>{}
beans-generic-di.xml
<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:aop="/schema/aop"xmlns:context="/schema/context"xsi:schemaLocation="/schema/context/schema/context/spring-context.xsd/schema/beans/schema/beans/spring-beans-4.0.xsd/schema/aop/schema/aop/spring-aop-4.0.xsd"><context:component-scanbase-package="com.spring.beans.generic.di"></context:component-scan></beans>
Main.java
publicstaticvoidmain(String[]args){ApplicationContextapplicationContext=newClassPathXmlApplicationContext("beans-generic-di.xml");UserServiceuserService=(UserService)applicationContext.getBean("userService");userService.add();}
输出
-9-22 20:20:17 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@8b819f: startup date [Mon Sep 22 20:20:17 CST ]; root of context hierarchy
-9-22 20:20:17 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [beans-generic-di.xml]
add...
com.spring.beans.generic.di.UserRepository@c01e99