我有以下代码:
控制器:
eventNotifier.saveMessage(buildMessage(message, room, sender));
事件通知器:
public void saveMessage(Message message){
r.notify(EventConsumer.NEW_MESSAGE, Event.wrap(message));
}
EventConsumer:
@PostConstruct
public void onStartUp() {
r.on(Selectors.R(MESSAGE_SAVED), createEventAndPush());
r.on(Selectors.R(NEW_MESSAGE), saveMessage());
r.on(Selectors.R(EVENT), pushToMixpanel());
}
public Consumer<Event<Message>> saveMessage(){
System.err.println("Calling save async");
return event -> messageRepo.save(event.getData());
}
结果表明永远不会调用方法saveMessage
。在启动服务器进程中,我看到它被调用一次。
我不确定这是与反应堆有关还是与春天有关。
编辑:我将保存过程移至服务,没有任何更改
edit2:我记录了服务操作,看看发生了什么:
@Service
@Slf4j
public class MessageService {
@Autowired MessageRepository messageRepo;
@Transactional
public void save(Message m){
try{
log.info("Saving...");
messageRepo.save(m);
log.info("Saved");
}catch(Exception e){
e.printStackTrace();
}
}
控制台中的输出是:
2016-09-09 16:24:42.152 INFO 45041 --- [ wa-chub-2] com.inkdrop.app.services.MessageService : Saving...
2016-09-09 16:24:42.154 INFO 45041 --- [ wa-chub-2] com.inkdrop.app.services.MessageService : Saved
JPA没有日志,没有!
答案 0 :(得分:2)
使用npm install d3-drag
注释的方法仅在bean创建期间由spring上下文调用一次。 @PostConstruct
方法明确调用onStartup()
方法,因此您可以看到一次调用。
要在每次必须明确调用它时保存它,它就不会神奇地完成。
答案 1 :(得分:1)