当前位置: 首页 > 知识库问答 >
问题:

如何迫使spring从未命名的实施注入

仉联
2023-03-14

我正在使用Atlassian SDK创建一个插件。SDK中有一个名为FieldHtmlFactory的接口,由一个名为FieldHtmlFactory的类实现,因此我们可以使用注入来访问它们。但是出于某种原因,我应该在某些情况下从这个接口进行另一个实现。现在我可以通过名称注入我自己的类,但是由于SDK实现没有任何名称,我不能再使用它了。在这种情况下有没有办法迫使spring使用SDK的实现?

SDK接口:

@ExperimentalApi
public interface FieldHtmlFactory {
    List<FieldHtmlBean> getCreateFields(ApplicationUser var1, OperationContext var2, Action var3, MutableIssue var4, boolean var5, List<String> var6);

    List<FieldHtmlBean> getLinkedIssueCreateFields(ApplicationUser var1, OperationContext var2, Action var3, MutableIssue var4, Issue var5, boolean var6, List<String> var7);

    List<FieldHtmlBean> getEditFields(ApplicationUser var1, OperationContext var2, Action var3, Issue var4, boolean var5);

    List<FieldHtmlBean> getInlineEditFields(ApplicationUser var1, OperationContext var2, Action var3, Issue var4, boolean var5);

    List<FieldHtmlBean> getSubTaskCreateFields(ApplicationUser var1, OperationContext var2, Action var3, MutableIssue var4, boolean var5, List<String> var6);
}

SDK实现:

public class fieldHtmlFactory implement FieldHtmlFactory{
    ...
}

我的实现:

@Named("FieldEditorFactoryImpl")
public class EditorHtmlFactoryImpl implement FieldHtmlFactory{
    ...
}

在某个地方使用我的类:

 @Autowired
 public MyREST(@Named("FieldEditorFactoryImpl") FieldHtmlFactory fieldHtmlFactory, ...)

我需要这样的东西来使用SDK类,但是,它不起作用:

 @Autowired
 public MyREST(@Named("") FieldHtmlFactory fieldHtmlFactory, ...)

共有1个答案

李烨烁
2023-03-14

有两个不同的bean,一个是SDK提供的,可能是通过自动配置定义的,另一个是您自己的。

将SDK bean作为@primary bean是很有用的,但是您需要了解它是如何定义的。通常应该用@ConditionalOnMissingBean来注释它,所以您可以自己定义两个不同的,但显然不适合您的情况。

一个肮脏的修复方法是使用它的默认名称,即简单的类名。

@Autowired
public MyREST(@Named("fieldHtmlFactory") FieldHtmlFactory fieldHtmlFactory, ...)
 类似资料:
  • 在新gem的初始起草中,我需要保留一些方法实现为空(将在下一步中实现) 因此,我想发出“尚未实现”异常的信号 我想知道是否有特定于Ruby语言的最佳实践或标准约定来编码这种占位符/异常。 例如:类似于: Java中的操作异常 在. net框架(C#)中没有实现异常

  • 问题内容: 我们在应用程序中使用Hibernate / JPA,Spring,Spring Data和Spring Security。我有一个使用JPA映射的标准实体。此外,我有一个 它遵循Spring Data约定来命名查询方法。我有一个实体 我想使用Spring Data审核支持。(如此处所述。)因此,我创建了一个如下: 当我创建一个方法时 一切都正确接线的地方是Spring Data 。然后

  • 我是JSON和REST的新手。我正在使用Spring的RestTemboard来使用JSON。我能够通过这个API调用使用这个JSON响应来做到这一点:http://data.fcc.gov/api/block/find?latitude=39.9936 JSON响应: 然而,当我从这个请求中获取这个FIPS代码,并尝试使用它通过这个调用从人口普查中请求信息时:http://api.census.

  • 问题内容: 什么是实现注释的有效用例? 在设计主要基于注释的配置系统时,我有时需要创建实现代码生成或程序配置的注释的类。 另一种选择是将批注中包含的数据镜像到DTO中,这似乎是一项开销。 这是一个例子: 与实施 我为此收到编译器警告,但是对于许多用例来说,它似乎是一个有效的工具。 上面示例的警告是 注释类型Id不应用作IdImpl的超级接口 编辑: 我刚刚从Guice找到了这个例子: 从Names

  • 当使用指定的bean注入点时,如何扩展命名bean? 我的项目1由3个spring Bean组成: 这个项目被捆绑到一个jar中,并作为我的第二个项目的依赖项包含在内: 我想发生的是将bean注入到的setter方法中。不幸的是,我收到了一个错误。 组织。springframework。上下文注释。冲突BeanDefinitionException:bean类[Bean1Child]的注释指定的b

  • 我开始使用JHipster v.3.5.1生成我的应用程序。 过了一段时间,我需要创建验证器,以便在使用POST创建实体时对其执行一些业务逻辑验证。所以我做了: 然后,我尝试将其注入我的控制器(注释为@ResControl ler),但无论我尝试哪种方式,它总是会导致这样的结果: 我尝试创建bean并注入它的方法 然而,我尝试了它-它失败了。我总是得到NoSuchBean定义异常或字段值设置为nu

  • 我有一个包含三个命名的@resource成员的类,如下所示: 从1.8.5升级到Mockito 1.9.5后,测试开始失败。测试套件仅模拟了一次PaginationRequestValidator,如下所示: 这导致只有三个实例中的第三个被注入,如下sysout所示: 显然,两个版本之间的行为发生了变化。我假设旧版本将mock注入到所有三个字段中--这对我来说仍然是一个可以接受的解决方案。 作为一

  • 在Perl中,使用Moo,可以围绕sub实现sub,它将围绕类中的其他方法。 如何在Raku中实现这种行为,最好使用角色?