zoukankan      html  css  js  c++  java
  • Spring4.0新特性--泛型依赖注入

    1)Spring4.0可以为子类注入子类的泛型类型,成员变量的引用

      下面UML图来说名关系  

      

        BaseService<T>:有RoleService和UserService两的子类

        BaseRepepositry<T>:有UserRepository和RoleRepositry两个子类

        由于BaseService<T>和BaseRepepositry<T>有关系所以,得出下面的子类也存在这样的关系

    2)用代码来说话

    1.---User.java

    1 package com.baba.miao.test.generic.di;
    2 
    3 public class User {
    4 
    5 }
    User

    2.---UserRepository.java

    1 package com.baba.miao.test.generic.di;
    2 
    3 import org.springframework.stereotype.Repository;
    4 
    5 @Repository   //交给IOC容器来管理
    6 public class UserRepository extends BaseRepository<User>{
    7 
    8 }
    UserRepository

    3.---UserService.java

    1 package com.baba.miao.test.generic.di;
    2 
    3 import org.springframework.stereotype.Repository;
    4 
    5 @Repository  //交给IOC容器来管理
    6 public class UserService extends BaseService<User>{
    7 
    8 }
    UserService

    4.---BaseService.java

     1 package com.baba.miao.test.generic.di;
     2 
     3 import org.springframework.beans.factory.annotation.Autowired;
     4 
     5 public class BaseService <T>{
     6 
     7         //关键所在    
     8     @Autowired
     9     protected BaseRepository<T> repository;
    10     
    11     public void add(){
    12         System.out.println("adding....");
    13         
    14         System.out.println(repository);
    15     }
    16 }
    17     
    BaseService

    5.---BaseRepository.java

    1 package com.baba.miao.test.generic.di;
    2 
    3 public class BaseRepository <T>{
    4 
    5 }
    BaseRepository

    6.Test---Main.java  (测试)

     1 package com.baba.miao.test.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 applicationContext = new ClassPathXmlApplicationContext(
    10                 "beans-generic.xml");
    11 
    12         UserService userService = (UserService) applicationContext
    13                 .getBean("userService");
    14 
    15         userService.add();
    16 
    17     }
    18 }
    Main

    7.配置文件

    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <beans xmlns="http://www.springframework.org/schema/beans"
    3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4     xmlns:context="http://www.springframework.org/schema/context"
    5     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    6         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    7 
    8 <context:component-scan base-package="com.baba.miao.test.generic.di"></context:component-scan>
    9 </beans>
    beans-generic.xml

      好了通过上面的代码就可以说明问题了

                        

                    本人是一个Java爱好者,欢迎交流

                                 ----By 小苗

  • 相关阅读:
    使用dozermapper,处理不了LocalDateTime的映射问题:java.lang.NoSuchMethodException: java.time.LocalDateTime.<init>()
    mybatis-plus使用Wrapper自定义sql时出现错误:Invalid bound statement (not found)
    com.baomidou.mybatisplus.core.mapper 不存在
    python爬虫
    DRF源码系列分析
    python学习目录
    脚本加载django环境
    celery定时任务
    用脚本创建django-orm数据库表数据
    关于python很吊的一项技术!!!!!
  • 原文地址:https://www.cnblogs.com/sxmcACM/p/3616811.html
Copyright © 2011-2022 走看看