【发布时间】: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