【问题标题】:It is not possible to automatically connect the bean from the user library.(Spring)无法从用户库中自动连接 bean。(Spring)
【发布时间】:2022-07-05 23:41:06
【问题描述】:

我使用 spring-boot (2.6.7)。

自定义库是从私有 nexus 存储库下载的,我在项目的类路径中看到。

我有一个自定义库,我想配置 bean。以便项目中的另一个组件自动将其实现为已配置的自身。

  • 来自库的 bean
//library

public interface Helper<S,T> {

    T prepare(S messageMetaDto);
}

  • 在库中实现该 bean
//library

@RequiredArgsConstructor
public class HelperImpl
        implements Helper<MessageMetaDto, EmailDto<MessageDto>> {

    private final MessageConverter<InfoDto, MessageDto>  messageConverter;

 @Override
    public EmailDto<MessageDto> prepare(MessageMetaDto messageMetaDto) {
  ....
}

}
//library

@Data
@Builder
@AllArgsConstructor
public class EmailDto<T> {

    private T message;

    @NotBlank
    private String name;

}
  • 在我的项目中
@Configuration
public class TemplateConfig {

    @Bean(name = "prepareMessage")
    public Helper<MessageMetaDto, EmailDto<MessageDto>> prepareMessage(MessageConverter<InfoDto, MessageDto> messageConverter){

        return new HelperImpl(messageConverter);
    }


    @Bean
    public MessageConverter<InfoDto, AzureMessageDto> messageConverter(){
        return new MessageConverterImpl();
    }
}

  • bean Helper -> 未找到

  • 但是 bean MessageConverter - 已经创建了。

    为什么没有创建带有嵌套参数的bean,而是创建了另一个。

但毕竟我在库中运行的集成测试是有序的,这么复杂的泛型并没有影响?

可能是什么问题?

【问题讨论】:

    标签: spring-boot java-17


    【解决方案1】:

    存在重复的数据模型

    //library
    
    @Data
    @Builder
    @AllArgsConstructor
    public class EmailDto<T> {
    
        private T message;
    
        @NotBlank
        private String name;
    
    }
    

    在项目中。我从项目中删除了它,然后库中的组件通常被初始化并添加到应用程序上下文中。

    【讨论】:

      猜你喜欢
      • 2012-06-01
      • 2016-09-27
      • 1970-01-01
      • 2012-12-04
      • 1970-01-01
      • 2015-08-06
      • 2023-02-06
      • 2016-12-24
      • 1970-01-01
      相关资源
      最近更新 更多