自学内容网 自学内容网

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


原文地址:https://blog.csdn.net/jingde528/article/details/140203451

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!