Spring 泛型依赖注入

Spring 泛型依赖注入,是利用泛型的优点对代码时行精简,将可重复使用的代码全部放到一个类之中,方便以后的维护和修改,同时在不增加代码的情况下增加代码的复用性。

示例代码:

  1. 创建实体类
    Product
    
    package test.spring.model;
    
    public class Product {
    	private int id ;
    	private String name;
    	/* setter getter省略 */
    	@Override
    	public String toString() {
    		return "Product [id=" + id + ", name=" + name + "]";
    	}
    	
    }
    User
    package test.spring.model;
    
    public class User {
    	private int id;
    	private String name;
    
    	/* setter、getter省略 */
    
    	@Override
    	public String toString() {
    		return "User [id=" + id + ", name=" + name + "]";
    	}
    
    	public User() {
    		super();
    	}
    
    }
  2. 创建Dao层相关接口及实现类

    对dao层的相同功能提取出来,创建一个带泛型的BaseDao类用于共用。
    package test.spring.Dao;
    
    import org.springframework.stereotype.Repository;
    
    /*必须加入注解,将BaseDao注入Spring容器,因为BaseService中有引用该类*/
    @Repository
    public class BaseDao<T> {
    	public void add(T t) {
    		System.out.println("BaseDao...."+t);
    	}
    
    }

    UserDao接口
    package test.spring.Dao;
    
    import test.spring.model.User;
    
    public interface UserDao {
    	public void add(User user);
    
    }
    

    UserDao实现类
     

    package test.spring.Dao;
    import org.springframework.stereotype.Repository;
    
    import test.spring.model.User;
    @Repository ("userDaoImpl")
    public class UserDaoImpl extends BaseDao<User> implements UserDao {
    
    }
    

    ProductDao接口
     

    package test.spring.Dao;
    
    import test.spring.model.Product;
    
    public interface ProductDao {
    	public void add(Product pro);
    }

    ProductDao实现类
     

    package test.spring.Dao;
    
    import org.springframework.stereotype.Repository;
    
    import test.spring.model.Product;
    @Repository("productDao")
    public class ProductDaoImpl extends BaseDao<Product> implements ProductDao {
    
    
    }

  3. Spring配置
    <?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.3.xsd">
    	<context:component-scan base-package="test.spring" >	</context:component-scan>
    	
    </beans>
  4. 测试
    package testSpring;
    
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import test.spring.model.Product;
    import test.spring.model.User;
    import test.spring.service.ProductService;
    import test.spring.service.UserService;
    
    public class TestSpring {
    	@Test
    	public void testUser() {
    		ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    		
    		  UserService userService=(UserService) ac.getBean("userService");
    		  userService.add(new User());
    		 System.out.println("-----------------------------");
    		ProductService  proService= (ProductService) ac.getBean("prodcutService");
    		proService.add(new Product());
    
    	}
    }
    结果:

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值