spirngMVC如何在專案中列印異常日誌+springmvc事務控制詳解
首先 service層的增、刪、改操作前要加註解@Transactonal,如下
@Transactional
public void saveErpProductType(ErpProductType erpProductType) {
erpProductTypeDao.saveOrUpdate(erpProductType);
}
這樣,當此方法出現異常時,會丟擲異常,在Controller層捕獲,此時,在Controller層就需要用try和catch處理,使資料庫不不發生事務,如下
private static final Logger log = Logger.getLogger(ProductTypeAction.class);//括號裡ProductTypeAction.class是當前Controller類 @RequiresPermissions(value = { "1465801690631" }) @RequestMapping(value = "/saveProductType") public ModelAndView validateTypeName(HttpServletRequest request, HttpServletResponse response) throws Exception { // 型別 ErpProductType erpProductType = new ErpProductType(); String typeName = request.getParameter("typeName").trim(); erpProductType.setTypeCode(erpProductTypeService.getMaxProductTypeFromMemory()); erpProductType.setTypeName(typeName); ErpUser loginUser = (ErpUser) request.getSession().getAttribute(Constant.USER); String marketNo = loginUser.getMarketNo(); try { erpProductTypeService.saveErpProductType(erpProductType); // 存入資料庫 LoadOnStartService.erpProductTypeTable.put(erpProductType.getId(), erpProductType); // 更新記憶體 LoadOnStartService.refreshMarketDataTable(marketNo, Constant.ONE); JSONObject jsonObject = new JSONObject(); jsonObject.put("msg", "儲存成功"); response.getWriter().write(jsonObject.toString()); return null; } catch (Exception e) { log.info(e.getMessage()); JSONObject jsonObject = new JSONObject(); jsonObject.put("msg", "儲存失敗"); response.getWriter().write(jsonObject.toString()); return null; } }
另外,就是log的配置檔案了,如下是xml方式,網上還有propertis的配置方式
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <!-- 根logger的設定 OFF,ERROR,WARN,INFO,DEBUG --> <root> <priority value="INFO" /> <appender-ref ref="CONSOLE" /> <appender-ref ref="myFile" /> </root> <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d - %c -%-4r [%t] %-5p %x - %m%n" /> </layout> <!--限制輸出級別--> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMax" value="ERROR" /> <param name="LevelMin" value="TRACE" /> </filter> </appender> <appender name="myFile" class="org.apache.log4j.DailyRollingFileAppender"> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="levelMin" value="info" /> <param name="levelMax" value="error" /> <param name="AcceptOnMatch" value="true" /> </filter> <param name="File" value="${erp.root}/logs/today.log" /><!-- 設定日誌輸出檔名 --> <param name="Append" value="true" /> <param name="DatePattern" value="'.'yyyy-MM-dd" /> <param name="MaxBackupIndex" value="10" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] [%p] [%c] %m%n" /> </layout> </appender> </log4j:configuration>
相關推薦
spirngMVC如何在專案中列印異常日誌+springmvc事務控制詳解
首先 service層的增、刪、改操作前要加註解@Transactonal,如下 @Transactional public void saveErpProductType(ErpProduc
springmvc事務管理詳解
spring可以支援程式設計式事務和宣告式事務。 Spring使用事務管理器,每個不同平臺的事務管理器都實現了介面:PlatformTransactionManager 此介面是事務管理的核心,提供了三個需要實現的函式: [java] v
java專案中的異常處理
java專案中的常用的異常處理情況 1)為可恢復的錯誤使用檢查型異常,為程式設計錯誤使用非檢查型錯誤。 選擇檢查型還是非檢查型異常,對於Java程式設計人員來說,總是讓人感到困惑。檢查型異常保證你對錯誤條件提供異常處理程式碼,這是一種從語言到強制你編'寫健壯的程式碼的一種方式,但同時會引入大量
java WEB專案中的異常處理(好文章連結)
http://blog.csdn.net/luqin1988/article/details/7970455 http://blog.csdn.net/luqin1988/article/details/7970782 http://blog.csdn.net/luq
Spring-Web專案中的異常處理
前言 異常體系在任何計算機語言中都有著重要的分量,但是對於普通開發者來說總是存在著多多少少的疑問:什麼時候使用異常?什麼時候要對異常進行統一處理?該如何對異常進行統一處理? 這裡,我將把我們後臺系統的異常處理機制的演變過程進行闡釋。 分散式處理 大家
Java EE專案中的異常處理 (實在寫的太好了,導致我非法轉載!!!)
為什麼要在J2EE專案中談異常處理呢?可能許多java初學者都想說:“異常處理不就是try….catch…finally嗎?這誰都會啊!”。筆者在初學java時也是這樣認為的。如何在一個多層的j2ee專案中定義相應的異常類?在專案中的每一層如何進行異常處理?異常何時被丟擲
Maven專案中spring異常之CannotLoadBeanClassException
(注:此異常發生在全註解開發下) 異常釋義:此異常意為無法載入xml檔案中配置的bean。 產生機制:當maven專案開始執行的時候,會根據@Autowired註解,載入被註解
JVM解惑:消失的異常堆疊,log中列印異常堆疊為空
正常郵件是這樣的: 生產環境拋異常,但卻沒有將堆疊資訊輸出到日誌,確認列印日誌方法正確logger.error("somthing error", ex),發現這個日誌捕捉了NullPointerException,但是沒有異常堆疊資訊,只有java.lang.
Java EE專案中的異常處理總結(一篇不得不看的文章)
什麼是異常?執行時發生的可被捕獲和處理的錯誤。這篇文章主要介紹了Java EE專案中的異常處理總結,有需要的可以瞭解一下。 為什麼要在J2EE專案中談異常處理呢?可能許多java初學者都想說:“異常處理不就是try….catch…finally嗎?這誰都會啊!”。筆者在
web專案中如何選擇日誌元件(SLF4J、Log4J2、logback)
一:SLF4J、Log4J2、logback、Apache log4j元件簡介slf4j譯為簡單日誌門面,是日誌框架的抽象。LogBack和Log4j都是開源日記工具庫,LogBack是Log4j的改良版本,比Log4j擁有更多的特性,同時也帶來很大效能提升。詳細資料可參照下
Net Core中數據庫事務隔離詳解——以Dapper和Mysql為例
事務 ring 增刪改 tostring 測試 stc efault 多個 log Net Core中數據庫事務隔離詳解——以Dapper和Mysql為例 事務隔離級別 準備工作 Read uncommitted 讀未提交 Read committed 讀取提交內
Spring --15.Spring中基於xml的宣告事務控制
開發環境: jdk1.8 Idea 2017 :Maven工程、引入父工程 Tomcat:apache-tomcat-8 Spring:5.0.7 一、事務控制 1、概述 事務的概念: 事務是邏輯上一組操作、組成這組操作各個邏輯單元、要麼一起成功、要麼一起失敗。 事
Spring中七種Propagation類的事務屬性詳解:
在宣告式的事務處理中,要配置一個切面,其中就用到了propagation,表示打算對這些方法怎麼使用事務,是用還是不用,其中propagation有七種配置,REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT
Spring架構---Spring中的事務管理詳解
Spring中的事務管理詳解 1. 事務簡介: 事務管理是企業級應用程式開發中必不可少的技術,用來確保資料的完整性和一致性 事務就是一系列的動作,它們被當作一個單獨的工作單元。這些動作要麼全部完成,要麼全部不起作用 2. 事務的四個關鍵屬性(ACID) ① 原子性(atomici
JavaEE開發之SpringMVC中的路由配置及引數傳遞詳解
在之前我們使用Swift的Perfect框架來開發服務端程式時,聊到了Perfect中的路由配置。而在SpringMVC中的路由配置與其也是大同小異的。說到路由,其實就是將URL對映到Java的具體類中的具體方法,或者對映到具體的JSP檔案上。本篇部落格主要就闡述瞭如何在SpringMVC中配置路由以及RES
Net Core中資料庫事務隔離詳解——以Dapper和Mysql為例
原文: Net Core中資料庫事務隔離詳解——以Dapper和Mysql為例 Net Core中資料庫事務隔離詳解——以Dapper和Mysql為例 事務隔離級別 準備工作 Read uncommitted 讀未提交 Read
Java中事務總結詳解(精華)
1.什麼是JAVA事務? 通常的觀念認為,事務僅與資料庫相關。 事務必須服從ISO/IEC所制定的ACID原則。ACID是原子性(atomicity)、一致性(consistency)、隔離性 (isolation)和永續性(durability)的縮寫。 事務的原子性:表示事務執行過程中的任何失敗都將
spring中service呼叫service的事務控制
在使用SPRING的事務控制時,事務一般都是加在SERVICE層的,這個時候如果一個SERVICE呼叫另一個 SERVICE時有可能會出現事務控制問題,比如第二個SERVICE丟擲了異常,第一個SERVICE卻正常提交了, 比如下面這個例子: 事務配置 <t
關於在 vue專案中對echarts圖表的一些控制(及陣列物件去重)
1.利用replace對後臺返回的json資料做替換處理 (不管是多麼複雜的資料結構,都可以利用這樣的方法去全部匹配) var json = [{'real-name':'lolo'},{'real-name':'abc'},{'real-name':'
java中異常與try catch finally詳解(轉載)
簡介程式執行時,發生的不被期望的事件,它阻止了程式按照程式設計師的預期正常執行,這就是異常。異常發生時,是任程式自生自滅,立刻退出終止,還是輸出錯誤給使用者?或者用C語言風格:用函式返回值作為執行狀態?。Java提供了更加優秀的解決辦法:異常處理機制。異常處理機制能讓程式在異