素材巴巴 > 程序开发 >

spring4泛型注入

程序开发 2023-09-10 20:01:33

Spring 4.x 中可以为子类注入子类对应的泛型类型的成员变量的引用,(这样子类和子类对应的泛型类自动建立关系)
具体说明:
泛型注入:就是Bean1和Bean2注入了泛型,并且Bean1和Bean2建立依赖关系,这样子类Bean3(继承bean1)和bean4(继承bean2)就会自动建立关系
不是泛型注入:就是说Bean1和Bean2都没有注入泛型,只是建立了关系,子类Bean3(继承bean1)和bean4(继承bean2)也会自动建立关系

泛型依赖注入的实现步骤:
  1新建两个泛型类,并建立依赖关系:
  具体代码:
  BaseRepository:

package com.jeremy.spring.genericityDI;
 public class BaseRepository{
 }

  BaseService:

复制代码
package com.jeremy.spring.genericityDI;import org.springframework.beans.factory.annotation.Autowired;public class BaseService {@Autowired------//这里告诉IOC容器自动装配有依赖关系的Beanprotected BaseRepository baseRepository;--------//这里是子类继承依赖关系public void add(){System.out.println("add..............");System.out.println(baseRepository);}
 }
复制代码

  2新建一个泛型类:

  User:

package com.jeremy.spring.genericityDI;public class User {}

  3新建BaseRepository和BaseService的子类
  UserRepository:

复制代码
package com.jeremy.spring.genericityDI;
 import org.springframework.stereotype.Component;@Component
 public class UserRepository extends BaseRepository{}
复制代码

  UserService:

复制代码
package com.jeremy.spring.genericityDI;import org.springframework.stereotype.Service;@Service
 public class UserService extends BaseService{}
复制代码

  4:在Spring的配置文件中配置自动装配带有注解的Bean:
  

复制代码

 
 
 
 
复制代码

5测试代码和结果
  测试代码:

@Testpublic void test() {ApplicationContext actx=new ClassPathXmlApplicationContext("Bean-genericity-di.xml");UserService userService=(UserService) actx.getBean("userService");userService.add();}

测试结果:

add..............
 com.jeremy.spring.genericityDI.UserRepository@16546ef

从结果看,虽然子类没有建立依赖关系,但userRepository实例还是被实例化了,就证明了父类的依赖关系,子类是可以继承的

其实这里也可以说明,就算父类不是被IOC容器管理,但是建立关系时添加了@Autowired注解,父类的关系会被继承下来


标签:

上一篇: go ---- beego框架过滤器使用 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。