1. 程式人生 > >Java設計一個可追蹤是否成功執行的方法

Java設計一個可追蹤是否成功執行的方法

沒寫過web應用的人永遠不知道只能看log日誌debug的痛苦
因此,設計一個可追蹤是否成功執行的方法,並在專案中廣泛使用,對web應用來說很重要

使用:

public class Test{
    public static void main(String[] args){
        Abc abc = new Abc();
        //Java傳引用,使用NameValeDto物件儲存方法中業務邏輯處理的結果
        NameValeDto inputDto = new NameValeDto("A","12");
        if(!abc.mainService1(inputDto )){
            logger.error("mainService1 error"
); return; } if(!abc.mainService2(inputDto )){ logger.error("mainService2 error"); return; } if(!abc.mainService3(inputDto )){ logger.error("mainService3 error"); return; } } }

定義:

//Java傳引用,使用NameValeDto物件儲存方法中業務邏輯處理的結果
public class NameValeDto { public String name; public String value; public NameValeDto(String name, String value){ this.name = name; this.value = value; } }
public class Abc {
    boolean mainService1(NameValeDto nameValeDto){
    //Java傳引用,使用NameValeDto物件儲存方法中業務邏輯處理的結果
if(nameValeDto.name==null||nameValeDto.value==null){ logger.error("no 引數 input"); return false; } try{ //業務邏輯 return true; } catch(Exception e){ logger.error("mainService"+e.getMessage()); return false; }finally{ //close resource } } boolean mainService2(NameValeDto nameValeDto){ //Java傳引用,使用NameValeDto物件儲存方法中業務邏輯處理的結果 if(nameValeDto.name==null||nameValeDto.value==null){ logger.error("no 引數 input"); return false; } try{ //業務邏輯 return true; } catch(Exception e){ logger.error("mainService"+e.getMessage()); return false; }finally{ //close resource } } boolean mainService3(NameValeDto nameValeDto){ //Java傳引用,使用NameValeDto物件儲存方法中業務邏輯處理的結果 if(nameValeDto.name==null||nameValeDto.value==null){ logger.error("no 引數 input"); return false; } try{ //業務邏輯 return true; } catch(Exception e){ logger.error("mainService"+e.getMessage()); return false; }finally{ //close resource } } }

Java中沒有一種技術,可以約束一個方法的格式,換句話說,Java沒法定義一個方法的模板,做到只需要替換引數就可以應用到不同的業務。

只能依靠所謂的“程式碼規範”。

鄙人認為這是不對的,比如本文的3個方法,有很多冗餘的程式碼。假如Java有這樣的機制定義一個模板如下:

@BooleanReturn //約束了返回值為Boolean,並對異常自動logger並return false
mainService3(/*引數列表*/){
    //業務邏輯
}

開發不僅變得簡單而且規範。遺憾的是,Java註解做不到

相關推薦

Java設計一個追蹤是否成功執行方法

沒寫過web應用的人永遠不知道只能看log日誌debug的痛苦 因此,設計一個可追蹤是否成功執行的方法,並在專案中廣泛使用,對web應用來說很重要 使用: public class Test{ public static void main(S

java建立一個執行的jar包小程式

首先有兩個概念需要清楚: 1、idea打包java可執行jar包:http://www.cnblogs.com/blog5277/p/5920560.html 2、Java中String [] args中的args是什麼意思:https://blog.csdn.net/qq_356032

JAVA設計模式-單例模式(Singleton)執行緒安全與效率

一,前言   單例模式詳細大家都已經非常熟悉了,在文章單例模式的八種寫法比較中,對單例模式的概念以及使用場景都做了很不錯的說明。請在閱讀本文之前,閱讀一下這篇文章,因為本文就是按照這篇文章中的八種單例模式進行探索的。   本文的目的是:結合文章中的八種單例模式的寫法,使用實際的示例,來演示執行緒安全和效率  

設計一個拔插的 IOC 容器

前言 磨了許久,藉助最近的一次通宵上線 cicada 終於更新了 v2.0.0 版本。 之所以大的版本號變為 2,確實是向下不相容了;主要表現為: 修復了幾個反饋的 bug。 靈活的路由方式。 可拔插的 IOC 容器選擇。 其中重點是後面兩個。 新的路由方式 先來看第一個:路由方式的更新。 在之前的版本

Java設計一個分數類。要求:1.分類包含的分數運算有:連個分數的加、減、乘、除運算。

設計一個分數類。要求: 1.分數中包含的分數運算有:兩個分數的加、減、乘、除運算。 2.分數的輸出格式是:“分子/分母”。 3.編寫一個測試程式進行測試。 C++版本請複製連結檢視http://blog.csdn.net/bee0_0/article/details/781

Java設計一個程式,找到一個字串中對稱字串的個數【面試題】

題目要求: 用Java設計一個程式,實現一個字串的對稱個數,如字串"effeghg",有"ff","effe","ghg"這三個對稱字元,所以返回3. 我實現的思路就是遍歷這個字串, 先選定頭位置為第一個字元,然後從最後向前遍歷這個字串, 頭尾兩個字元相同,則取中間字串,

Java 設計模式(二):工廠方法模式

參考連結:工廠方法模式-Factory Method Pattern 在介紹簡單工廠模式時提到簡單工廠模式存在一個很嚴重的問題,就是當系統中需要引入新產品時,如果靜態工廠方法是通過傳入引數的不同來建立不同的產品,這必定要修改工廠類的原始碼,將違背“開閉原則”,如何實現增加新產品而不影

Java設計模式菜鳥系列(四)工廠方法模式建模與實現

工廠方法模式(Factory Method) 工廠方法:顧名思義,就是呼叫工廠裡的方法來生產物件(產品)的。 工廠方法實現方式有3種: 一、普通工廠模式。就是建立一個工廠類,對實現了同一介面的一些

java設計模式之——簡單工廠、工廠方法模式、抽象工廠模式(建立性)【讀書筆記】

1、簡單工廠模式            應用場景,程式設計中通過工廠方法接受一個引數,建立不同類型別的例項。            設計示意圖                                         例項                  

java判斷一個字串是否為空的方法總結

  今天寫程式碼發現一個判斷字串是否為空的問題貼上我的程式碼:if(!username.equals("")&&!userpassword.isEmpty()&&!phString.isEmpty()&&!userpasswor

java設計模式之——策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式(行為型)【讀書筆記】

一、策略模式           定義:定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到演算法的客戶。           使用場景:策略模式是一種定義一系列演算法的方法,從概念上看,所有的這些演算法完成的都是相同的工作,只是實現不

java判斷一個字串是否為空的方法

以下是 Java 判斷字串是否為空的三種方法. 方法一: 最多人使用的一個方法, 直觀, 方便, 但效率很低. 方法二: 比較字串長度, 效率高, 是我知道的最好一個方法. 方法三: Java SE 6.0 才開始提供的方法, 效率和方法二幾乎相等, 但出於相容性考慮, 推

Java開發小工具(1)(生成一個執行的jar包)

一、概述平常工作中難免會遇到些大量重複性沒有什麼技術含量的體力活,這時候,我們通常用程式去寫個小工具來完成,最簡單常見的就是寫個Java  Main方法,執行Main方法就可以完成相應的功能,但這樣的工

如何將一個java程式打包成一個執行程式

可以把普通的Java程式做成真正的exe,也就是單一個exe就可以在沒有安裝JVM的機器上執行。這樣的工具常見的有JET和gcj.前者是收費的,而且做出來的exe還是需要一堆dll。推薦使用gcj.他有windows和Linux版,直接下載zip包,不需要安裝,裡面有不少例子,一些build的批處理檔案。

[JAVA]利用bat將jar轉變成一個執行檔案exe

>本質     明白話說在前頭,其實這是一種掩耳盜鈴的做法,不過在表現形式上,很像是把jar變成了一個可執行的exe檔案來執行。     jar的執行依舊是需要JRE環境的,但這個我們可以通過其他方式來實現,這裡暫掛不表,我們留到最後去說。     轉載請註明:[來自

設計一個快取系統 java執行緒讀寫鎖的應用

package test; import java.util.HashMap; import java.util.Map; import java.util.Random; import java.util.concurrent.locks.ReadWriteLock;

Java動畫 重力彈球 如鵬遊戲引擎 精靈 設計一個小球加速落地又減速彈起並反復直到停止的Java程序

ble ack pause ani ring pen nts game 遊戲 package com.swift; import com.rupeng.game.GameCore; public class BouncingBall implements Runnab

要創建一個執行的jar,我們需要添加spring-boot-maven-plugin到我們的 pom.xml。為此,請在該dependencies部分正下方插入以下幾行:

pos pen 如果 個人 uil sta type version port 要創建一個可執行的jar,我們需要添加spring-boot-maven-plugin到我們的 pom.xml。為此,請在該dependencies部分正下方插入以下幾行: 1 <bui

java算法面試題:設計一個快速排序。雙路快速排序,簡單易於理解。

面試題 != ava 思路 add bubuko 比較器 繼續 array package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Com

從程序員的角度設計一個Java的神經網絡

orm 人工神經網絡 ola turn .com 信號 div gpo 默認 歡迎大家前往雲+社區,獲取更多騰訊海量技術實踐幹貨哦~ 來自維基百科: 人工神經網絡(ANN)或連接系統是受生物神經網絡啟發構成生物大腦的計算系統。這樣的系統通過考慮例子來學習(逐步提高性能)