如何解决在动态注册的Bean上的Spring Boot @Transactional支持
为了提高我的服务的可配置性,我实现了一种逻辑,以获取要在运行时注册的,在我的配置中定义的bean,例如:
READ_BIT
在应用程序启动时,引导程序组件读取配置并根据其在配置中的定义实例化Bean:
receivers:
myResource:
sourceExchange: MyExchange
entity: "com.company.domain.MyEntity"
writer: "com.company.writer.MyEntityDBWriter"
这很好用,并允许可配置的Bean注册,而不会丢失自动配置/自动装配支持。
由于这些bean中采用的逻辑是DB-Writing-Logic,因此我想通过使用 @Component
@Slf4j
public class ReceiverBootstrapper {
private ReceiversConfigurationModel configuration;
private ConfigurableApplicationContext context;
private Environment environment;
public ReceiverBootstrapper(ReceiversConfigurationModel receiversConfigurationModel,ConfigurableApplicationContext context,Environment environment) {
this.configuration = receiversConfigurationModel;
this.context = context;
this.environment = environment;
}
@postconstruct
public void bootstrapReceivers() throws ClassNotFoundException,illegalaccessexception,InstantiationException {
Map<String,ReceiverConfigurationModel> receiverMap = this.configuration.getReceivers();
for (String receiverName : receiverMap.keySet()) {
ReceiverConfigurationModel receiverConfigurationModel = this.configuration.getReceivers().get(receiverName);
Class writerClass = Class.forName(receiverConfigurationModel.getWriter());
AbstractDocumentWriter writer = (AbstractDocumentWriter) writerClass.newInstance();
context.getbeanfactory().registerSingleton(receiverName + "Writer",writer);
context.getbeanfactory().autowireBean(writer);
writer.postconstruct();
...
}
}
进行自动事务管理来扩展此概念,但是我想我将不得不告诉某些Manager遵守实例化和注册的手册上的这些注释。豆。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。