Spring 泛型依赖注入

发布于:2024-07-08 ⋅ 阅读:(46) ⋅ 点赞:(0)

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());
    
    	}
    }
    结果:


网站公告

今日签到

点亮在社区的每一天
去签到