zoukankan      html  css  js  c++  java
  • 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实体依赖的结果,相信大家应该已经多多少少有点理解了吧
  • 相关阅读:
    node 使用 ssh2-sftp-client 实现 FTP 的文件上传和下载功能
    gulp 使用 gulp.spritesmith 组件生成雪碧图
    webpack4 打包多页面应用
    javascript 两个变量值的互换
    微信公众号爬坑(react)
    文件上传(H5 + node)
    前后端分离 ajax 跨域 session 传值 (后端使用 node)
    webpack dev 日记
    npm报错 端口被占用 events.js:167 throw er; // Unhandled 'error' event Error: listen EADDRINUSE 127.0.0.1:9999
    多个 img 之间存在间隔
  • 原文地址:https://www.cnblogs.com/albertrui/p/8284538.html
Copyright © 2011-2022 走看看