框架整體介紹:http://blog.csdn.net/flyxxxxx/article/category/7055640
對此框架有興趣或想參與開發的請加QQ羣:255195191在基於Spring中的項目開發中,如果要寫一些用戶操作日誌或拋出事件、短信發送、郵件發送等,通常代碼可能是下面這樣:
@RequestMapping(...)
public Object business1(){
//do something
eventService.send(myevent);//拋出事件
logService.log(...);//記錄日誌
}
很明顯,如果某天需要調整架構或是取消部分日誌代碼時,上面的代碼均可能需要進行修改。
在Prototype框架中,簡化爲:
@Prototype
public class MsgBusiness {
//異步日誌及事件
void async(){
log();
sendEvent();
}
@Msg(type="log")//定義消息類型爲log
public Log log(){
return new Log(....);//構造一個日誌對象返回
}
@Msg(type="event")
public MyEvent sendEvent(){
return new MyEvent(....);//構造一個日誌對象返回
}
}
//消息的偵聽處理類
@Subscribe(type = { "log" })
@Slf4j
public class LogMsgBusiness {
public void onMessage(Log log){
log.info("Reveive msg : "+value);//在這裏記錄日誌,事件處理與此類似
}
}
基於Prototype的框架處理日誌及事件等消息時,是否處理相關消息,如何處理均與業務代碼完全無關,可以作到業務處理與實現邏輯的完全解耦。