Java SpringRoo:在更新时触发操作–;最佳做法
我已经玩了一点SpringRoo,现在我在问自己,在对象更新之后,Roo建议的方式或最佳实践方式是什么 让我用一个例子来解释: 假设我想实现一个基于web的Bug跟踪器(我不想这样做,这只是一个示例)。一个bug追踪器,是关于问题的。每个问题都有一个状态(新建、已确认、已分配、正在进行、已解决)、一个标题和一些其他字段 用户有一个web表单,可以在其中输入和更新所有字段(状态、标题等)。当问题的状态从“进行中”切换到“已解决”时,系统应向所有对错误感兴趣的人员发送电子邮件(如何维护此感兴趣人员列表,超出此问题的范围) 我遇到的问题是:当状态发生变化时(在Roo应用程序中),如何触发电子邮件发送过程?,因为有几个问题:Java SpringRoo:在更新时触发操作–;最佳做法,java,spring,architecture,spring-roo,Java,Spring,Architecture,Spring Roo,我已经玩了一点SpringRoo,现在我在问自己,在对象更新之后,Roo建议的方式或最佳实践方式是什么 让我用一个例子来解释: 假设我想实现一个基于web的Bug跟踪器(我不想这样做,这只是一个示例)。一个bug追踪器,是关于问题的。每个问题都有一个状态(新建、已确认、已分配、正在进行、已解决)、一个标题和一些其他字段 用户有一个web表单,可以在其中输入和更新所有字段(状态、标题等)。当问题的状态从“进行中”切换到“已解决”时,系统应向所有对错误感兴趣的人员发送电子邮件(如何维护此感兴趣人员列
- 如何确定问题状态是否已更改
- 我们需要确保在问题完成后发送的消息得到更新(例如,将触发器放在问题的setState()方法中不起作用,因为不能保证表单(title…)中的其他值在状态更改之前得到更新
- 只有在表单有效且问题可能被保存的情况下才能发送邮件(我不面临无法提交事务的问题–这将是另一个问题)
是否有人拥有良好的、可测试的(单元测试)和可维护解决方案?可维护意味着处理此问题的代码不应放在控制器中,因为它将在多个控制器中使用,并且有一天有人将实现一个新的控制器,他可能会忘记处理此电子邮件问题。您可以使用
@PostUpdate
注释在上,是一个JPA生命周期回调侦听器
class Issue{
@PostUpdate
protected void onPostUpdate(){
//This method wil run after the update
if(this.state == Resolved){
//...
}
}
@skaffman:为什么要删除spring标签:这是一个与spring相关的问题?