我想编写一些基本类,默认情况下应选择使用Spring
进行自动装配。只有 if 这些类被扩展,因此为它们提供了自定义实现,我希望拾取自定义实现,而不是默认实现。
当我不想创建默认类abstract
时,我怎样才能实现它(因为应用程序应该能够在没有自定义实现的情况下运行,只有默认实现)?
以下示例:我想为任何错误提供基本处理程序。但是这个设置只有在我制作BaseHandler
摘要时才有效,我不想要(因为在这种情况下我会强迫任何人使用我的库来实现该类)。
@MessageEndpoint
public class BaseHandler {
@ServiceActivator(inputChannel = "errorChannel")
public A_Stadisdatensatz handle(Message<MessageHandlingException> message) {
process(message.getPayload());
}
/**
* Override to supply specific processing
*/
void process(Payload payload) {
//do some default processing
}
}
@MessageEndpoint
public class CustomHandler extends BaseHandler {
@Override
void process(Payload payload) {
//custom processing
}
}
如果我以这种方式运行,CustomHandler
永远不会被选中。
那么,这不可能吗?
答案 0 :(得分:1)
我想您正在使用@Autowired
来注入依赖项。在这种情况下,您可以使用@Primary
注释覆盖默认的onesie
@Primary
@MessageEndpoint
public class CustomHandler extends BaseHandler {
@Override
void process(Payload payload) {
//custom processing
}
}