單車第二天

轉(zhuǎn)自http://coder520.com/
1、如果使用jndi數(shù)據(jù)源,那些賬號密碼得設(shè)置在tomcat松蒜,這樣就無法使用springboot,但是安全已旧,因為寫在dev配置文件里其他開發(fā)人員都可以看到秸苗。
2、springboot的單元測試运褪,進(jìn)行單元測試這樣就不用每次都啟動整個項目惊楼,請求的controller端口

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MamabikeApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MamabikeApplicationTests {

    @Autowired
    private TestRestTemplate restTemplate;  //模擬http請求,訪問rest資源

    @LocalServerPort
    private int port;   //使用隨機(jī)端口

    @Test
    public void contextLoads() {
        String result = restTemplate.getForObject("/user/hello",String.class);
        System.out.println(result);
    }

}

3秸讹、springboot默認(rèn)使用jackjson去把對象轉(zhuǎn)換為json檀咙,但是jackson效率比較低,fastjson比較高璃诀,我們選擇fastjson去替換jackson弧可,首先pom需要引入依賴,springboot整合fastjson很簡單劣欢,只需要在Application類里配置fastjson的bean就行棕诵。

/**
     * Author ljs
     * Description 整合fastjson,替換默認(rèn)的jackjson
     * Date 2018/8/30 16:00
     **/
    @Bean
    public HttpMessageConverters fastJsonHttpMessageConverters(){
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
        HttpMessageConverter<?> converter = fastConverter;
        return new HttpMessageConverters(converter);
    }

判斷是否整合fastjson凿将,fastjson和jackjson有個最重要的區(qū)別校套,字段的值為null話,fastjson是不能轉(zhuǎn)換的就是不輸出的牧抵,而jackjson是仍然會輸出null搔确。
之前的jackjson輸出:headimg為null

{"id":1,"nickname":"wang","mobile":"18980840843","headImg":null,"verifyFlag":2,"enableFlag":1}

替換了fastjson之后,null的值已經(jīng)都不輸出顯示了。這樣就表示替換成功

{"verifyFlag":2,"mobile":"18980840843","nickname":"wang","id":1,"enableFlag":1}

4灭忠、springboot讀取配置文件也很容易,例如要讀取application.yml里mamabike,只需要注解value這樣就獲取的到mamabike了座硕。


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

獲取多個值和切分后面會遇到弛作。但是yml也是有缺點,一些特殊符號不支持华匾,例如*映琳,yml主要放核心配置机隙,用戶配置放在properties文件。
5萨西、日志的整合
使用logback替換log4j有鹿,之前整合的log4j所有的error,debug等等日志都放在一塊logback可以分類但是太麻煩谎脯,使用logback可以進(jìn)行分類葱跋,分別放到不同文件中。還可以按dao源梭,controller下的error娱俺,exception分類。
5.1废麻、導(dǎo)入logback的依賴和common的依賴,可以使用更高版本荠卷,但是版本號一定得相同
logback主要核心依賴

<!--logback-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.1.6</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.6</version>
        </dependency>

其中l(wèi)ogback-access可以不加

<dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-access</artifactId>
            <version>1.1.2</version>
        </dependency>
<dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.10</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>

5.2、創(chuàng)建logback配置文件
不用自己寫烛愧,只需要復(fù)制然后改下目錄就行油宜。
兩個修改,設(shè)置存放日志的路徑,注意不要寫d:什么怜姿,因為你這個系統(tǒng)很有可能是在lunix下部署的

<property name="LOG_HOME" value="/logs/mamabike/" />

把mamabike包下的所有error輸出放在normallog和errorlog里慎冤。我們也可以指定user模塊或者其他模塊。例如:mamabike.user社牲。

<logger name="com.ljs.mamabike" level="debug" >
        <appender-ref ref="normalLog" />
        <appender-ref ref="errorLog" />
    </logger>

5.3粪薛、整合logbcak
也很簡單只需要在application里寫上

#log
logging:
  config: classpath:logback.xml

5.4、最后maven不會自動幫我們編譯這些xml搏恤,如果不編譯到target违寿,工程就用不到logback,所以像之前的mapper.xml一樣熟空,需要在pom.xml下的resource寫上,讓它把resource里的yml藤巢,properties,xml都給編譯上息罗。

<resource>
                <directory>${basedir}/src/main/resources</directory>
                <includes>
                    <include>*.yml</include>
                    <include>*.properties</include>
                    <include>*.xml</include>
                </includes>
            </resource>

5.5掂咒、測試logback是否整合成功
步驟,寫個service讓數(shù)據(jù)庫插入數(shù)據(jù)迈喉,故意拋出異常绍刮。然后再寫個test方法,調(diào)用發(fā)現(xiàn)這不是我們想要的sql異常挨摸,

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ljs.mamabike.user.service.UserService.login

debug
發(fā)現(xiàn)userService并沒有注入而是注入了ibatis下的類孩革,而ibatis下的類又沒有l(wèi)ogin方法,所以報錯得运。


image.png

解決方法是膝蜈,使用@Qualifier("userServiceImpl")指定bean注入锅移。
解決之后,這就是我們想要的異常了。

Error updating database.  Cause: java.sql.SQLException: Field 'mobile' doesn't have a default value

但是查看error.log里并沒有記錄饱搏,原因是這錯誤需要我們自己記錄非剃。注意logger和loggerfactory都是s'j

@Test
    public void test(){
        Logger logger = LoggerFactory.getLogger(MamabikeApplicationTests.class);
        try{
            userService.login();
        }catch (Exception e){
            logger.error("出錯了", e);
        }
    }

現(xiàn)在error里就有了。而且exception里沒有記錄達(dá)到分類的效果推沸。

6备绽、加速開發(fā)插件
例如省略get和set方法,還有可以省略Logger這條語句坤学。
首先需要引入jar包

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.6</version>
        </dependency>

然后按照插件setting→plugins→Browse repositories疯坤,輸入lom后選擇install plugin,這里翻墻下載不了深浮,所以https://blog.csdn.net/m0_37597572/article/details/81185052
最后加上注解
刪除get和set然后給類加上@Data压怠。
刪掉logger語句,給類加上@@Slf4j飞苇。然后使用log就行了菌瘫。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市布卡,隨后出現(xiàn)的幾起案子雨让,更是在濱河造成了極大的恐慌,老刑警劉巖忿等,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栖忠,死亡現(xiàn)場離奇詭異,居然都是意外死亡贸街,警方通過查閱死者的電腦和手機(jī)庵寞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來薛匪,“玉大人捐川,你說我怎么就攤上這事∫菁猓” “怎么了古沥?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長娇跟。 經(jīng)常有香客問我岩齿,道長,這世上最難降的妖魔是什么苞俘? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任纯衍,我火速辦了婚禮,結(jié)果婚禮上苗胀,老公的妹妹穿的比我還像新娘襟诸。我一直安慰自己,他們只是感情好基协,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布歌亲。 她就那樣靜靜地躺著,像睡著了一般澜驮。 火紅的嫁衣襯著肌膚如雪陷揪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天杂穷,我揣著相機(jī)與錄音悍缠,去河邊找鬼。 笑死耐量,一個胖子當(dāng)著我的面吹牛飞蚓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播廊蜒,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼趴拧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了山叮?” 一聲冷哼從身側(cè)響起著榴,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎屁倔,沒想到半個月后脑又,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡锐借,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年问麸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞎饲。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡口叙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嗅战,到底是詐尸還是另有隱情妄田,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布驮捍,位于F島的核電站疟呐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏东且。R本人自食惡果不足惜启具,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望珊泳。 院中可真熱鬧鲁冯,春花似錦拷沸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至跨扮,卻和暖如春序无,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背衡创。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工帝嗡, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人璃氢。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓哟玷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拔莱。 傳聞我的和親對象是個殘疾皇子碗降,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)塘秦,斷路器讼渊,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 文/Nichole 紀(jì)事/隨筆 騎行下班的第二天爪幻,體驗?zāi)Π輪诬嚒?已經(jīng)過了下班高峰期,路上人沒有太多须误。 正想著摩拜...
    翁萍閱讀 256評論 0 0
  • 個人專題目錄[http://www.reibang.com/u/2a55010e3a04] 一挨稿、Spring B...
    Java及SpringBoot閱讀 2,827評論 1 25
  • 1、秋の田の かりほの庵の 苫を荒み わが衣手は 露に濡れつつ2京痢、春過ぎて 夏きにけらし 白妙の 衣...
    常非常K閱讀 985評論 2 8
  • 2015年3月奶甘,我做了一個艱難的決定——考研。 東教的自習(xí)室很冷清祭椰,去自習(xí)的次數(shù)也寥寥無幾臭家。5月份裝修之后,...
    鄭雪瑩閱讀 399評論 1 1