【經驗分享】開發學習方向 和 spring boot 全局異常處理簡單搭建

 

  • 摘要

今天終於打敗了懶惰,決定寫這篇博客,主要想把本人在中作中的一些經驗和感悟分享給大家,純屬個人應該如何對待工作的一些見解,如果打破了誰的生活觀價值觀,我並無此意,還請自覺繞行。


  • 正文 

人生真的很長,時間也真的過的很快,所以真的真的要學會好好生活,懂得珍惜,學會愛人,保持進步。

無論做什麼事都取決於每個人的性格,工作也是一樣的。當然我只能侷限在自己的領域發表一下看法。開發這條道路需要學習的事情是很多的,技術大牛這件事真的就是想想就可以了,我不是說你不可能達到,每個行業都有頂尖人才,如果你是,那麼衷心的祝賀並送上我羨慕的目光。

那麼你們會問,我要學會什麼事情呢,我該怎麼學呢。或者有人又會說,每天真的很忙,哪有時間啊。講真我最煩別人這樣說了,你到底有多忙啊,全世界就你在忙一樣,放棄是一件很簡單的事情,你難道不想嘗試做一些突破嗎???只要你想做的事情你總會有時間的,所以別總是還沒經過自己的深思熟慮,就這麼輕言放棄。我這麼說並沒有針對哪一類人。世界很大,每個人的成長都是獨一無二的,每個人都有自己對待生活的理解和態度,我尊重每一個思想。如果你是積極樂觀努力進步型,希望我的一些經驗能讓你有所獲,反過來,我也非常希望能吸取你們的經驗,歡迎點評。

程序員這個職業,無論你是在本公司工作,還是外包外派,其實發展路線大致都是相同的,隨着年齡的增長,我相信每一位開發人員都懂得,單純的開發絕不是長久之計,我們都懂的要走向管理崗位。當然你可能會說我專注技術,我要向架構師進階!!!就在一年之前我也是這個想法,我是覺得我的性格不適合做管理,我只想專注於技術工作,我熱愛技術,哈哈哈。一年之間真的我又學到了很多,只要你向上走,你都要明白一件事,不管什麼崗位,你首先要學會和自己的上級領導彙報工作。彙報工作可不是一件很簡單的事哦,職場中和領導的交流真的你要慢慢體會。第一點,在工作中你要有自己的規劃,是對你自己的規劃,你的每個階段性的目標,公司是需要你做出成績的,領導是需要你能爲他扛起一些事,所以有目標性的工作,有目標性的彙報工作,爲領導分憂。第二點:工作這件事真的就是幹雜活,並不是你想的我就做好我自己的工作就可以了的,你需要與同事之間打交道,學會處理各種事情,那麼你會接觸到各種流程,你目前所在公司實際工作中存在的問題,多學習多瞭解,自己一定要認真分析,學會站在管理層的角度分析,該如何處理,而不是一味的去抱怨。可將一些你很苦惱的,很影響你工作的事彙報給領導,但是你一定要有自己的處理方法,不然你可能是給自己挖坑,因爲領導纔不想給你操心如何給你解決問題的。一說就多,都是沒意義的雞湯,很多事都需要親身經歷才明白的, 下面直接來乾貨吧,畢竟我可不想耽誤你們的寶貴時間,然後換來一堆罵聲的,我努力把一些經歷表達出來。

有一類人是這樣的,很知道用自己的時間去學習,在工作中,做完了自己的開發工作就去自己學習。這樣真的很好,我覺得這份自覺的努力就已經爲你豎起大拇指了。但是我並不完全認同,我說了公司是要你來創造價值的,你的領導需要你來爲他分憂,換個角度,如果你是個領導,你是不是希望你的下屬很精明能幹,很多事不會讓你太操心,懂得給你彙報工作情況,你再向你的領導彙報。所以說,學習是業餘的事情,公司中你要時刻對你的所作所說保持高度警惕。表達了這麼多,我想說的是你想要進步不是錯,但努力的方向一定是要學會彙報工作,多接觸流程管理,多思考,把你所經歷的各種你認爲沒意義的事情規劃出來應該怎麼分配,怎麼處理纔好。各個處室各個部門之間該怎麼配合工作。要學會站在一個管理的高度去思考去解決問題。

再來實際說一些流程上的事情。產品經理拿到需求,1、需求分析階段,最好開發人員能夠參與到其中,瞭解需求的目的,思考通過什麼樣的技術實現,也就是技術選型,這也是你成長爲一名合格架構師的必經之路,一個好的架構師,一定是能夠針對公司定位,準確把握技術實現需求的。2、需求評審通過,進入設計階段,這時候就是需要你將技術選型落實,具體詳細設計,定義開發規範,還會有一個工作的人員排期,用於統計每個人的工作量,這個階段,簡單來說就是你要對你的決定負責,要保質保量的完成落地,是一名合格架構師的另一個要素。3、設計評審通過,進入開發階段,作爲一名普通的開發,下面就是你閃亮登場的時刻,你要多多接觸多多學習,良好的開發規範,以及學會提升你的技術水平,碼出優雅的代碼,充分自測,產出設計文檔,自測報告,接口文檔,需要執行的sql腳本,如果有操作手冊,運維手冊就更好了,這樣測試上線後的問題,你就可以喊出強硬的口氣,自己去看文檔。真的,如果你是開發你一定深刻體會到,生產運維問題,時刻困擾着你,影響着你當前的工作。如果你是個組長之類的,你還要管理好每個需求的開發分支,要去操心這其中的每一件事。如果這個需求是涉及到了多個系統,你要學會協調溝通。4、自測聯調通過,提測進入測試階段,測試會簡單分爲SIT測試,測試人員執行測試用例,也就是針對這個需求要測試的重點。通過之後是UAT測試,也就是業務驗收階段,具體的需求提出人,要來驗收他的需求了。5、測試都通過之後,上線,就是選個良辰吉日,將項目部署到生產環境,投入使用。上線當天,也需要業務的驗證。

以上大概的流程可能你們會覺得都懂,是的,誰都明白這些事情,你寫這些讓我看是在浪費我的生命嗎?!不不不,絕不是這樣哦!在這一整個階段,如果你只是你個開發人員,你可能參與不到前期的需求分析,設計階段的,我想表達的是,你在工作中一定要學會站在一個很高的高度去學習思考和解決問題。這真的是一件重要的事情,不要在工作中遇到不滿就只是抱怨了,學會解決問題纔是你要學習的事情。站在一個很高的高度~~~

再補充一點,開發前重要的就是設計,設計好了,開發纔會順利的進行下去,所以拿到需求,一定要去了解這個需求的目的是什麼,針對你的目的去溝通,去設計,考驗你的業務能力以及和產品的溝通,把需求向技術方向完善。因爲很多開發爲了省事也爲了避免麻煩,拿到了需求只是死板的實現,在我看來這只是在應付工作,如果你沒有一個好的工作素養,談其他的都是白搭,在這些方面自己多一些思考,你一定會做得更好。

再有我講了很多的管理,該怎麼管理呢,做好每一件工作,每項工作都要有產出,也就是相關的文檔,這些文檔纔是見證你工作的強有力的依據,學習瞭解各種文檔的規範格式,較好的展現出你的開發工作。

說了這麼多,最後還有一項很重要的工作那就是學會做ppt,是的你要學會彙報工作,太過華麗卻沒能表達好你的主要思想?內容太單調我看的眼都花了,也打了個盹?這個業餘瞭解吧。我只能就是強調一下了。

前面這些大致講了,工作彙報,流程管理,一名程序員從底層開發提升自己的一些方向和感悟,我再來說一些很具體的事情。具體的東西就很侷限了,但很會幫助你深深理解管理這件事。

首先是開發,測試,運維之間的工作協調。你經常會發現,測試出了問題,開發你看一下,運維出了問題,開發你看一下,開發太難了。。。我只想安安靜靜的搞開發啊!哭。其實這些事情是難免的,文檔總是不可能解決所有問題以及問題的細節的。在這裏要強調一下並不是說文檔沒有意義,我現在前調的是一定要懂得流程管理。工作該怎麼協調,測試環境要測試自己部署,開發提測做好交接工作很重要。uat也要有專人負責。運維也如此。要分工明確。

寫到這腦子已經很亂了,還有很多事情沒有表達出來。希望能夠帶給你們一些努力的方向吧。


  •  彩蛋

最後,來點技術。spring boot 全局異常處理。超級簡單的搭建,以後有機會深入介紹。下面直接奉上代碼。

 項目結構圖:

spring boot 項目controller層: 可以看到自定義了除零異常,並沒有try{}catch(){}

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * @創建人 fanxuebo
 * @創建時間 2019-10-04 09:51:24 星期五
 * @描述
 */
@RestController
public class TestEurekaClientOneController {

    @Value("${server.port}")
    private String serverPort;

    @Value("${spring.application.name}")
    private String springApplicationName;

    @RequestMapping("hello")
    public String testHelloEureka(@RequestParam(value = "name", defaultValue = "fanxuebo") String name) {
        int errorInt = 1/0;
        return "Hello, " + name + "! My Name: " + springApplicationName + ", My Port:" + serverPort;
    }
}

啓動項目瀏覽器訪問情況,返回了錯誤頁面: 

 

下面我們進行全局異常處理: 

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @auther fanxuebo
 * @description 全局的統一異常處理類
 * @Company 
 * @createDate 2019-10-12 14:14:15 星期六
 */
@ControllerAdvice
@ResponseBody
public class RunTimeExceptionHandler {

    @ExceptionHandler(RuntimeException.class)
    public CommonResDto exceptionHandler(RuntimeException e) {
        return new CommonResDto(e.getMessage());
    }
}

再次通過瀏覽器訪問,已將異常捕獲。

補上pom依賴和全局異常處理類中的CommonResDto對象。 

pom文件只需引入依賴即可:該處的版本管理在父pom中。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

下面規範化了公共響應對象,和公共常量對象。省略了get set方法。

import java.io.Serializable;
import java.util.Date;

/**
 * @auther fanxuebo
 * @desc 公共響應對象(針對前端)
 * @Company 
 * @create 2018/11/14 11:10
 */
public class CommonResDto<T> implements Serializable {
    private static final long serialVersionUID = 5098229702138714205L;
    private String resultCode;//響應編碼
    private T resultMsg;//響應詳細信息
    private Date executeSqlTime;//提取時間(數據庫查詢時間)
    private T displayStatus;//頁面按鈕展示

    public CommonResDto() {
    }

    public CommonResDto(T errorResultMsg) {
        this.resultCode = ConstantRes.ERROR_CODE;
        this.resultMsg = errorResultMsg;
    }
}

 

/**
 * @auther fanxuebo
 * @description 公共常量對象
 * @Company 
 * @createDate 2019-10-12 16:23:37 星期六
 */
public class ConstantRes {

    public static final String SUCCESS_CODE = "000000";
    public static final String SUCCESS_MSG = "操作成功";
    public static final String ERROR_CODE = "000001";
}

 

 以上,很簡單的一個時間,能夠避免開發代碼中很多醜陋的try{}catch(){}。配合assert斷言效果更佳。全局的異常處理類可以針對業務異常精確分類。

 

再次感謝你們的閱讀!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章