Spring框架入门之Spring4.0新特性——泛型注入

Spring框架入门之Spring4.0新特性——泛型注入

一、为了更加快捷的开发,为了更少的配置,特别是针对 Web 环境的开发,从 Spring 4.0 之后,Spring 引入了 泛型依赖注入。

二、泛型依赖注入:子类之间的依赖关系由其父类泛型以及父类之间的依赖关系来确定,父类的泛型必须为同一类型。

  通俗一点来说:两个子类之间的依赖关系不需要在子类中去声明,而是在父类中进行了声明,而依赖的纽带就是 泛型类型,必须是相同的父类泛型类型才具有依赖关系。

三、代码说明如下:

  1.首先建立repository和service的两个基类如下:

 1 package me.spring.beans.generic.di;
 2 
 3 public class BaseRepository<T> {
 4 
 5 }
 6 
 7 package me.spring.beans.generic.di;
 8 
 9 import org.springframework.beans.factory.annotation.Autowired;
10 
11 public class BaseService<T> {
12 
13     /**
14      * 泛型注入,子类通过User类型依赖
15      * 控制台打印:UserRepository 即BaseRepository的子类
16      * add..
17      * me.spring.beans.generic.di.UserRepository@6fb0d3ed
18      */
19     @Autowired
20     protected  BaseRepository<T> baseRepository;
21     public void add() {
22         System.out.println("add..");
23         System.out.println(baseRepository);
24     }
25 }

  2.两个基类的实现类如下:(通过User实体依赖)

 1 package me.spring.beans.generic.di;
 2 
 3 import org.springframework.stereotype.Repository;
 4 
 5 @Repository
 6 public class UserRepository extends BaseRepository<User>{
 7 
 8 }
 9 
10 
11 package me.spring.beans.generic.di;
12 
13 import org.springframework.stereotype.Service;
14 
15 @Service
16 public class UserService extends BaseService<User>{
17 
18 }

  3.User实体

1 package me.spring.beans.generic.di;
2 
3 public class User {
4 
5 }

  4.main测试类:

 1 package me.spring.beans.generic.di;
 2 
 3 import org.springframework.context.ApplicationContext;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5 
 6 public class Main {
 7 
 8     public static void main(String[] args) {
 9         ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-generic-di.xml");
10         UserService userService = (UserService) ctx.getBean("userService");
11         userService.add();
12     }
13 }

  5.运行代码,控制台打印如下:

  add..
  me.spring.beans.generic.di.UserRepository@6fb0d3ed
  如上控制台打印:UserRepository 即BaseRepository的子类而不是BaseRepository,这是通过泛型及User实体依赖的结果,相信大家应该已经多多少少有点理解了吧

posted on 2018-01-14 21:55  Ryan520  阅读(660)  评论(0)    收藏  举报

导航