2017-05-27 21 views
-1

我有一個彈簧支架應用,在那裏我有在前面彈簧安置控制器,春季服務在服務背後中部和春天JPA庫。剩下的控制器只是將請求委託給服務層。現在,問題是,我可以在服務層或控制器層記錄任何問題或信息消息,或者我可以保持它們都是乾淨的,並使用aop方法來捕獲數據並將其記錄到日誌文件中。 我無法決定什麼是最好的方法,爲什麼。請給我一些建議,如果你有任何。謝謝。記錄和彈簧安置MVC應用程序

回答

2

解決這個問題的常用方法是在每個單獨的圖層中都有一個類的實例Logger

的爲例:

public class EmployeeService { 
    private Logger logger = LoggerFactory.getLogger(EmployeeService.class); 
} 

public class EmployeeController { 
    private Logger logger = LoggerFactory.getLogger(EmployeeController.class); 
} 
  • 的代碼更加乾淨
  • 你有possibilty做類方法裏的日誌,知道AOP計算策略不允許這樣做。
1

使用AOP方法,你要知道,新的額外的類將與提供日誌記錄功能集成到自己的類額外的邏輯來創建。而這些新的類(代理)將被用來代替你的。這種方法有一些問題,例如,當一個註釋爲寫入日誌的方法調用另一個也以類似的方式註釋的方法時 - 在這種情況下,第二種方法不會寫入日誌。

根據性能兩種方法都只是使用AOP在內存中更多的類非常相似。

此外,使用AOP你的方法調用之前或之後,可以只是做一個記錄,但如果您需要登錄的方法裏面的東西?

我建議用簡單的方法和類申報記錄。在這種情況下,您的代碼將更易於理解,並且您將擁有更好的靈活性。

1

對於每個類的用戶自己的記錄器對象來說,這是很好的方法,首先您肯定知道日誌初始化的位置,然後您可以靈活地配置日誌記錄過程。