我试图使用Spring Boot/Spring数据,遵循DDD体系结构准则来实现一个应用程序。我有一个聚合根,它使用方法AbstractAggregateRoot::RegisterEvent()发布域事件。此外,为了日志/跟踪的目的,我需要截获这些事件,所以我决定做一个实验:
首先,实现自定义ApplicationEvent发布服务器
public class CustomEventPublisher implements ApplicationEventPublisher {
private final ApplicationEventPublisher publisher;
private final Logger logger = getLogger(CustomEventPublisher.class);
public CustomEventPublisher(ApplicationEventPublisher publisher) {
this.publisher = publisher;
}
@Override
public void publishEvent(ApplicationEvent event) {
logger.info("sending an event...");
publisher.publishEvent(event);
}
//.....
}
然后注册为bean
@Configuration
public class CustomEventPublisherConfig {
@Bean
@Primary
public ApplicationEventPublisher getCustomEventPublisher(ApplicationEventPublisher publisher , RabbitTemplate rabbitTemplate) {
return new CustomEventPublisher(publisher, rabbitTemplate);
}
}
一旦我用注入的ApplicationEventPublisher显式发布来自某个示例对象的事件,这就很好了
public void pub() {
publisher.publishEvent(new Event(this , 1));
}
@EventListener
public void sub(Event e) {
this.value = e.getValue();
}
我收到了“发送一个活动...”日志条目
然后我尝试定义聚合根
@Entity
public class AggregateRoot extends AbstractAggregateRoot {
@Id
@GeneratedValue
private Long id;
private int value = 0;
public AggregateRoot setValue(int value) {
registerEvent(new Event(this , value));
return this;
}
}
public void pub() {
repository.save(new AggregateRoot().setValue(1));
}
有什么克服这个问题的建议吗?
提前致谢
据我所知,Spring没有提供替换EventPublishingRepositoryProxyPostProcessor
使用的发布服务器的方法。在我看来,你没有选择一条正确的道路来获得你想要实现的目标,所以我不是直接回答你的问题,而是在开始时描述的你的要求。
我建议您使用@eventlistener
注册一个侦听器,并在那里处理您的事件:
@EventListener
public void handleEvent(Event event) {
System.out.println(event);
}
也可以使用@TransactionalEventListener
将侦听器绑定到事务阶段:
@TransactionalEventListener(phase = TransactionPhase.BEFORE_COMMIT)
public void handleEvent(Event event) {
System.out.println(event);
}
我的程序目的:触发服务中的BACK按钮 我尝试了很多方法,没有人能达到这个目的,最后我发现了AccessibilityService,它可能是实现这个功能的最可能的方法。 我创建了这个AccessibilityService,并测试它是否正常工作 然后我尝试将移动到服务,但它不执行操作。 我也尝试以不同的方式发送自定义事件,但没有人可以发送到MyAccessibilityService 如何向My
我正在创建一个应用程序,我需要从自定义gmail域发送电子邮件。这是我的代码。 它给我的错误如下: 线程"main"中的异常java.lang.运行时异常:javax.mail.身份验证失败异常:534-5.7.14请通过534-5.7.14您的Web浏览器登录,然后重试。534-5.7.14在534 5.7.14https://support.google.com/mail/answer/787
/** 自定义消息发送接口(目前只支持文本消息发送) @param chatController 聊窗实体(必须是小能SDK创建的聊窗实体NtalkerChatController类型) @param type 消息类型: 11:文本消息 12:图片消息 13:语音消息 14:视频消息 @param message 消息内容 */ NSString *str = @“自定义文本消息test”;
我一直在尝试使用 Openshift Online v3 来托管一个 Web 应用程序。它适用于红帽提供的域,但我无法让路由工作以使其在任何其他域上工作。我得到的只是: 应用程序不可用 应用程序当前未在此终结点处为请求提供服务。它可能尚未启动或仍在启动。 您看到此页面的可能原因: 有人知道如何在Openshift v3中创建自定义域吗?
问题内容: 我试图在PyQt中发出自定义事件。一个小部件将发出,另一个小部件将监听事件,但是两个小部件不需要关联。 在JavaScript中,我会这样做 编辑:我知道信号和插槽,但只知道如何在父级和子级之间使用它们。我如何在任意不相关的小部件之间使用这种机制(或其他机制)? 问题答案: 在PyQt中,以下说明: 等价的 以类似的方式: 等价的 但是最大的区别是“文档”对象的范围,因为连接是在全局元