Java 如何在Spring中为autowire提供基类?

Java 如何在Spring中为autowire提供基类?,java,spring,spring-integration,Java,Spring,Spring Integration,我想编写一些基类,默认情况下应该选择这些基类,以便使用Spring自动连线。只有当这些类被扩展,从而为它们提供了一个自定义实现时,我才希望选择自定义实现,而不是默认实现 当我不想让我的默认类抽象化(因为应用程序应该能够在没有自定义实现的情况下运行,而只是通过默认实现)时,如何实现它 下面的例子是:我想为任何错误提供一个基本的处理程序。但是,只有当我将BaseHandler抽象化时,这种设置才会起作用,而我不希望抽象化(在这种情况下,我会强制使用我的库的任何人实现该类) @MessageEndpo

我想编写一些基类,默认情况下应该选择这些基类,以便使用
Spring
自动连线。只有当这些类被扩展,从而为它们提供了一个自定义实现时,我才希望选择自定义实现,而不是默认实现

当我不想让我的默认类
抽象化
(因为应用程序应该能够在没有自定义实现的情况下运行,而只是通过默认实现)时,如何实现它

下面的例子是:我想为任何错误提供一个基本的处理程序。但是,只有当我将
BaseHandler
抽象化时,这种设置才会起作用,而我不希望抽象化(在这种情况下,我会强制使用我的库的任何人实现该类)

@MessageEndpoint
公共类基址处理器{
@ServiceActivator(inputChannel=“errorChannel”)
公共A_Stadisdatensatz句柄(消息){
进程(message.getPayload());
}
/**
*覆盖以提供特定的处理
*/
无效处理(有效载荷){
//做一些默认处理
}
}
@消息端点
公共类CustomHandler扩展了BaseHandler{
@凌驾
无效处理(有效载荷){
//定制处理
}
}
如果我这样运行,
CustomHandler
将永远不会被拾取。
那么,这是不可能的吗?

我猜想您正在使用
@Autowired
注入依赖项。在这种情况下,您可以使用
@Primary
注释覆盖默认注释,即

@Primary
@MessageEndpoint
public class CustomHandler extends BaseHandler {
    @Override
    void process(Payload payload) {
        //custom processing
    }
}

您可能需要查看Spring概要文件。这些允许您为特定配置(dev、prod等)创建特定bean。我知道spring的简介,但我认为它不适合我的需要。我只是想实现一个绑定,默认情况下连接一个默认类,如果提供了对这个类的扩展,就选择这个。。。Spring Boot的注释?请参阅示例。您能告诉我们您尝试将其注入的位置吗?bean配置是如何管理的?它没有注入任何地方。它由
@enableeintegration
@Primary
@MessageEndpoint
public class CustomHandler extends BaseHandler {
    @Override
    void process(Payload payload) {
        //custom processing
    }
}