`
nannan408
  • 浏览: 1783352 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

架构师之spring------@Autowire注入多泛型实例 can not cast to的问题解决

 
阅读更多
1.前言。
  当你同一个类,注入了两次,实际上是有风险的。如这样注入:
 
    @Autowired
    private A<T1, T1> a1;
   @Autowired
   private A<T2, T1> a2;


A中定义有一个属性为
B<T,T1> b1;



这样同样的类,但泛型不同,在spring运行中b1在实例化的时候,将会产生冲突,将可能报类型转换错误。
spring会把a1的 泛型擦除为a2的泛型。
2.解决办法。
  在A的构造方法中显式实例化A.如:

public void A{
   b1=new B<T,T1>();
}





如果还不能解决,在获取返回的泛型结果中进行强转.
如List list= (T1)b1.getList();

3.总结.
(1) 泛型和回调经常会出现这个情况.尽量同一个service只@autowire同一个类的1实例。实在需要织入两个,则 在service的构造方法中显式初始化需要调用泛型的属性。
  (2)虽然jdk编译不会出错,但在获取泛型类型的时候会出现转换错误,所以获取泛型List的时候进行强转,是个好习惯。如2中提到的转换方法。
0
1
分享到:
评论

相关推荐

    spring-autowire-demo.zip

    本示例"spring-autowire-demo.zip"是基于Spring 5.3.6版本,通过多个示例展示了自动装配的不同方式:default、byName、byType和constructor,帮助我们更深入理解这个功能。 首先,让我们了解什么是自动装配。自动...

    Spring-Framework-Notes-For-Professionals.pdf

    Framework-Notes-For-Professionals.pdf”文档内容的知识点提取和详细解释,涉及Spring框架的基本概念、核心特性、配置方式、Bean的创建与作用域、条件注册、数据验证、上下文配置以及网络服务调用等多方面的详细...

    flance#spring-framework-reference-5.1.3#1.9.5.使用泛型作为自动注入的约束1

    例如,假设您有以下配置:假设前面的bean实现了一个泛型接口(即存储和存储),您可以@Autowire存储接口并将泛型用作限定符,如下面的示例所示:// &lt;St

    spring-autowire.zip

    其中,Spring的自动装配特性(Autowired)是其核心特性之一,极大地简化了依赖注入的过程。本篇文章将通过在IDEA 2020环境下构建的Spring 5小实例,深入解析Spring的@Autowired注解,帮助读者理解和掌握这一关键知识...

    多线程Autowire注入null的解决方案.docx

    在 Spring 项目中,多线程 Autowire 注入 null 的问题是一个常见的问题。当我们在多线程中使用 @Autowired 注解时,可能会出现 null 的情况。这是因为多线程是防注入的,容器中的组件不会自动注入到多线程中。 解决...

    Spring实战之@Autowire注解用法详解

    Spring实战之@Autowire注解用法详解 Spring是一个流行的Java框架,提供了许多有用的功能和注解来简化开发过程。@Autowire是Spring框架中一个非常重要的注解,用于自动装配Bean。下面将详细介绍@Autowire注解的用法...

    maven-spring-ioc

    Spring IoC通过XML配置文件实现了对象的实例化和依赖注入,有效地降低了对象间的耦合,提高了代码的可读性和可维护性。理解并熟练运用Spring的IoC机制是成为一名优秀的Java开发者的关键步骤之一。在实际项目中,结合...

    Autowire是Python的轻量级和简单的依赖注入库

    **Autowire:Python中的轻量级依赖注入库** 在Python开发中,依赖注入(Dependency Injection,简称DI)是一种设计模式,它可以帮助我们编写更灵活、可测试和可维护的代码。Autowire是一个专为Python设计的轻量级且...

    spring-core.pdf

    - **排除自动装配**: 可以通过设置`autowire-candidate`属性为`false`来排除某个Bean的自动装配。 - **1.4.6 方法注入**: - **查找方法注入**: 通过查找方法注入依赖项。 - **任意方法替换**: 替换现有方法的...

    spring-3.1.0中文版api帮助文档

    ### Spring 3.1.0 API中文版帮助文档解析与知识点提炼 #### 一、Spring 3.1:Java EE 6的实施利器 **1.1 Java EE 6编程模型讨论** - **Java EE 6敏捷性评估**:探讨Java EE 6是否真正达到了敏捷开发的标准。 - **...

    (转)Spring中@Autowired注解和@Resource注解的区别

    在Spring框架中,`@Autowired`和`@Resource`注解是两个常见的依赖注入(DI, Dependency Injection)工具,它们都是用来解决组件之间的耦合问题,使得代码更加灵活和可测试。然而,这两个注解在具体使用时有一些关键性...

    因Spring AOP导致@Autowired依赖注入失败的解决方法

    Spring AOP 导致@Autowired 依赖注入失败的解决方法 Spring AOP(Aspect-Oriented Programming,面向切面编程)是一种编程技术,它允许开发者在不修改源代码的情况下,增加新的功能。然而,在使用 Spring AOP 时,...

    spring-3.1.0中文版api帮助文档.pdf

    - **Autowiring策略**:通过元素的autowire属性、@Required、@Autowired或@Inject注解,以及primary属性或@Qualifier注解,Spring能够智能地进行依赖注入,减少了配置的繁琐。 - **资源操控与容器宿主**:Spring...

    spring-cloud-kubernetes:Kubernetes与Spring Cloud的集成

    该项目已移至 。 Spring Cloud Kubernetes 与集成 特征 (无论代码在Kubernetes内还是外部运行,它都是透明的) ... 然后,您可以通过以下方式将客户端注入到您的云中: @Autowire private Discov

    spring4示例代码

    spring的生命周期及BeanPostProcessor的使用,注解方式创建bean 及使用Autowried标签关联类的属性 ,泛型依赖注入的使用 spring-3 演示使用动态代理模式实现面向切面编程 使用注解方式进行AOP编程及使用配置xml方式...

    20 面试官,请不要再问我@Resource和@Autowire注解的区别了慕课专栏(1)1

    在Java Spring框架中,`@Resource`和`@Autowired`都是用于依赖注入(DI)的注解,但它们有着不同的用途和工作原理。本篇文章主要关注`@Resource`注解,探讨其使用方法和实现机制。 `@Resource`注解通常用于按名称注入...

    autowiring-bug-boot:带有有限泛型的服务的Spring Boot自动装配问题

    在Spring Boot应用中,自动装配...总之,处理有限泛型的服务时,Spring Boot的自动装配可能会遇到挑战,但通过使用`@Qualifier`、更精细的bean扫描配置或者第三方库,我们可以有效地解决这些问题,保持应用的正常运行。

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 ...

    storm-spring-autowire:使storm支持spring的注入功能

    storm-spring-autowire 使storm支持spring的注入功能 由于storm的生命周期如下 1.在提交了一个topology之后(是在nimbus所在的机器么?), 创建spout/bolt实例(spout/bolt在storm中统称为component)并进行序列化. 2.将...

    详解SpringBoot 多线程处理任务 无法@Autowired注入bean问题解决

    SpringBoot 多线程处理任务中无法@Autowired注入bean问题解决 在 SpringBoot 应用程序中,多线程处理任务是一个常见的场景,但是,在多线程处理任务中无法使用 @Autowired 注入 bean,这是一个常见的问题。今天,...

Global site tag (gtag.js) - Google Analytics