26-Spring_Basic-3

1.泛型注入

今天在学习spring的时候遇到了不少问题,很绕

先来阐述一下自己的问题:

什么是泛型,泛型注入有什么用,service层是什么,repository层又是什么,spring各个层具体是做什么的,泛型类到底是不是个类等等,有很多疑问,我相信这些问题在以后肯定会迎刃而解,或者说"恍然大悟"

2.泛型类

写好一个泛型以后,使用的时候传入泛型类的类就可以使用了,但是这里只能传引用类,不能使用基本类型

不能对确切的泛型类型使用instanceof操作,比如

String.class instanceof Class<String>这种属于非法操作,正确的是:

String.class instanceof Class<?>,?表示一个具体实参,代表所有的泛型类

这里的Class<?>叫做泛型的通配符,"?"是一个实参,而不是形参,"?"表示的是所有实参的真实父类

3.泛型方法

/**
* 泛型方法的基本介绍
* @param tClass 传入的泛型实参
* @return T 返回值为T类型
* 说明:
* 1)public 与 返回值中间<T>非常重要,可以理解为声明此方法为泛型方法。
* 2)只有声明了<T>的方法才是泛型方法,泛型类中的使用了泛型的成员方法并不是泛型方法。
* 3)<T>表明该方法将使用泛型类型T,此时才可以在方法中使用泛型类型T。
* 4)与泛型类的定义一样,此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型。
*/public <T> T genericMethod(Class<T> tClass)throws InstantiationException ,
IllegalAccessException{
T instance = tClass.newInstance();
return instance;
}

返回类型是泛型,也就是说,只有返回类型是<T>的时候,才能被称之为泛型方法,这个时候表示,我返回一个由外部指定的对象,是什么对象,你来定

4.泛型依赖注入疑问

本来是看视频的时候讲这个依赖注入,完全看不懂,有几个原因:

      spring注解,其用@repository装配了实现类,又用@Autowired装配了一个在userService的全局变量,是这个userRepository的接口类Repository,到底注入的是哪一个呢?spring的@service和@repository,等等这些注入方式,到底是如何注入的,需要查看完整的spring注解注入文档,今天来看吧

   5.泛型在spring的DAO层的应用

在实际业务中,一个实体类bean肯定是要对应一个持久化bean,持久化bean负责对数据库进行数据源的存取,然后bean会接受和传输对外层面的数据

这里会出现问题:

    每一个实体bean,你都需要创建与之对应的持久层bean,如果使用泛型,多个实体bean,对应同一个泛型的持久化bean,那么这样肯定是可以简化代码的

这里循序渐进的给了一个解决办法:

    写了一个持久化bean的父类,BaseRepository,继承这个父类,那么这个时候,每一个具体的持久化bean,就不需要在写之前的那个打印方法,而是直接super.就可以了

比如,持久化层对数据库进行crud的时候,都是一样的,把公共方法写在父类里,这样就部分性的减少了大量的print代码,全部放在持久化父类就可以了

3.重点解释泛型,在刚才的例子中的应用:
把刚才在持久层创建的BaseRepository改写成泛型的方 ss BaseRepository<T> {

        public T getBean(String beanName) {

    }


    public void printString(T t) {

        System.out.println(t);
    }

}

这里的:
public void printString(T t) {


        System.out.println(t);
}

替代了刚才所说的super父类的方法的那一步,而:      

    public T getBean(String beanName) {
}
    
这一步,就完全不再需要去创建实体bean对应的持久化bean了,如果某个实体类bean,需要实现某些比较特殊的方法,那就extends,然后加一些自己的方法

   上面这一段表示,连子类都不需要再创建,直接用泛型方法,传什么bean进去,就得到这个beanRepository

5.泛型依赖注入

泛型的依赖注入,其实跟普通的bean没有啥区别...都是一样的依赖注入...只不过实现泛型的类,其天然带有泛型父类的关系,我也不知道讲这个有啥用....

小结一下:

        关于泛型注入这里,最主要的就是这里的依赖注入的时候,注入到容器的泛型的bean,那么所有外部实现泛型bean的具体bean,也是已经在IOC容器里面了???,再者就是spring的各种注解注入问题...

明天学习aop技术...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值