spring4.0之泛型依赖注入

来源:互联网 发布:软件行业利润率 编辑:程序博客网 时间:2024/06/05 11:46

spring 4.x以上版本才有

写一个baseRepository,可以将DAO层相同的操作给封装起来,比如一般的增删改查,所有的DAO一般都有这些操作,因此可以写到父类中,并且使用泛型

package com.zj.generic;public class BaseRepository<T> {    public void add() {        System.out.println("reponsitory add ....");    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

baseService

package com.zj.generic;import org.springframework.beans.factory.annotation.Autowired;public class BaseService<T> {    @Autowired    private BaseRepository<T> repository;    public void add(){        repository.add();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在BaseService中装配了BaseRepository

写两个子类分别继承他们两

package com.zj.generic;import org.springframework.stereotype.Repository;@Repositorypublic class UserReponsitory extends BaseRepository<User>{}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
package com.zj.generic;import org.springframework.stereotype.Service;@Servicepublic class UserService extends BaseService<User>{}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

配置文件配置扫描包

<?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.xsd        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"><context:component-scan base-package="com.zj.generic"></context:component-scan></beans>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

测试方法

package com.zj.generic;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Main {    public static void main(String[] args) {        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-generic.xml");        UserService userService = (UserService) ctx.getBean("userService");        userService.add();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 在以上的代码中,BaseService中引用了BaseReponsitory,并且在BaseService的add方法中调用了BaseReponsitory的add方法
  • 在他们的子类中,继承了这种关系,因此我们在测试方法中调用userService.add(); 也是可以成功地调用UserReponsitory中的add方法
  • 根据泛型T自动注入相应的Reponsitory

原创粉丝点击