1. 程式人生 > >最近有時間 回顧一下2年前用這個Springboot的點點滴滴 Springboot 讀取資原始檔

最近有時間 回顧一下2年前用這個Springboot的點點滴滴 Springboot 讀取資原始檔

在實際的專案開發之中資原始檔一定不可或缺失,因為所有的提示文字資訊都要求在資原始檔之中進行定義,而且資原始檔是實現國際化技術的主要手段。如果要想在Springboot 裡面進行資原始檔的配置只需要做一些簡單的application.yml 配置即可 而且所有注入的資原始檔都可以像最初的Spring處理那樣直接使用MessageSource 進行讀取

   1.0 為了統一管理資原始檔 在src/main/resources 目錄之中建立有一個il8n的儲存目錄 

   2.0 在 src/main/resources/il8n  目錄之中建立有兩個資原始檔 

           建立 Messages.properties

welcome.url=www.fabu0746.com

welcome.msg=zw

          建立 Pages.properties

member.add.page=/pages/back/admin/member/member_add.jsp

member.add.action=/pages/back/admin/member/member_add.action

 

把預設配置檔案 .properties 改為.yml 格式的配置 

  1.   YAML 檔案 

        這是一種結構化的資料檔案,其在很多的地方上都使用過,列如 Apache Storm 開發元件上進行配置的時候使用的就是yml 配置檔案 該配置檔案的全稱 Yet Another Markup Languange 然是一種標記語言 

修改 application.yml 

spring:   #表示該配置直接為Spring 容器負責處理

  messages:   #表示進行資源配置

    basename: il8n/Messages,il8n/Pages #資原始檔的名稱

server:     #修改訪問埠

  port: 80
  1. 當執行完以上的配置之後會自動為使用者建立MessageSource 物件,那麼使用者在使用的時候直接注入此物件即可 。考慮真實開發的標準 建議建立一個父類的控制器的抽象類 而後在此抽象類之中進行資源讀取讀取類的配置  AbstractBaseController 

package com.hema.demo2.controller;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.MessageSource;

import java.util.Locale;

/**

* 描述:

* 抽象類 進行資源的讀取

*

* @author zw

* @create 2018-11-28 9:12 PM

*/

public abstract class AbstractBaseController {


    @Autowired

    private MessageSource  messageSource;


    public String getMessage(String key,String ... args){


        System.out.println(Locale.getDefault());


        return this.messageSource.getMessage(key,args, Locale.getDefault());

    }

}


在控制器的子類之中讀取以上的配置資訊

package com.hema.demo2.controller;


import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;


/**

* 描述:

* 子類 讀取抽象類配置資訊

*

* @author zw

* @create 2018-11-28 9:16 PM

*/

@RestController

public class MessageController  extends AbstractBaseController {


    /****

     * 進行資源的讀取

     * @return

     */

    @RequestMapping(value = "/msg",method = RequestMethod.GET)


    public String msg(String mid){


        System.out.println("[****訪問地址*********]"+super.getMessage("member.add.action"));

        return  super.getMessage("welcome.msg",mid);

    }

}

編寫一個junit 測試類  來測試以上的控制器程式是否正確
 

package com.hema.demo2;


import com.hema.demo2.controller.MessageController;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.junit4.SpringRunner;

import org.springframework.test.context.web.WebAppConfiguration;


/**

* 描述:

* 測試類

*

* @author zw

* @create 2018-11-29 9:16 PM

*/

@SpringBootTest

@RunWith(SpringRunner.class)


public class TestMessageController {


    @Autowired

    private MessageController messageController;


    @Test

    public  void  testMsg(){

       System.out.println(this.messageController.msg("zwjava"));

   }

}

通過springboot 執行可以清楚的發現 在Springboot 裡面所有的物件資訊注入配置操作,都直接通過一行簡單的字串實現了,而且最終也能保持與之前同樣的執行效果。

喜歡的麻煩在  githua 上點個小星星

githua  程式碼如下   https://github.com/zhouwei520/Springboot/tree/master/demo2