1. 程式人生 > >第三章:SpringBoot配置深入-2. 讀取資原始檔

第三章:SpringBoot配置深入-2. 讀取資原始檔

開發十年,就只剩下這套架構體系了! >>>   

原始碼下載:https://u11556602.ctfile.com/fs/11556602-361219278

                https://download.csdn.net/download/qq_36267875/11089023

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

1.為了統一管理資原始檔,在“src/main/resources”目錄之中建立有一個i18n的儲存目錄

2.在“src/main/resources/i18n” 目錄之中建立有兩個資原始檔:

    建立Messages.properties:

welcome.url=www.mldn.com
welcome.msg=歡迎{0}光臨!

建立Pages.properties配置檔案:

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

3.修改application.yml配置檔案

spring:     # 表示該配置直接為Spring容器負責處理
  messages: # 表示進行資源配置
    basename: i18n/Messages,i18n/Pages  # 資原始檔的名稱
server:
  port: 80      # 此處設定的服務的訪問埠配置

4.當執行完以上的配置之後會自動為使用者建立MessageSource物件,那麼使用者在使用的時候直接注入此物件即可。

    考慮到實際開發的標準性,所以現在建議建立一個父的控制器的抽象類;AbstractBaseController,在此抽象類之中進行我們資源讀取類的配置

package cn.mldn.microboot.util.controller;

import java.util.Locale;

import javax.annotation.Resource;

import org.springframework.context.MessageSource;

public abstract class AbstractBaseController {
	@Resource
	private MessageSource messageSource; //自動注入此資源物件
	public String getMessage(String key, String... args) {
		return this.messageSource.getMessage(key, args, Locale.getDefault());
	}
}

5.在控制器的子類之中讀取控制器的配置資訊

package cn.mldn.microboot.controller;


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

import cn.mldn.microboot.util.controller.AbstractBaseController;

@RestController
public class MessageController extends AbstractBaseController{
	@RequestMapping(value="/echo",method=RequestMethod.GET)
	public String echo(String mid) {
		System.out.println("【==訪問地址==】"+super.getMessage("member.add.action"));
		return super.getMessage("welcome.msg", mid);
	}
}

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

package cn.mldn.microboot.test;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;

import cn.mldn.microboot.StartSpringBootMain;
import cn.mldn.microboot.controller.MessageController;

@SpringBootTest(classes = StartSpringBootMain.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class TestMessageController {
	@Resource
	private MessageController messageController;
	@Test
	public void testEcho() {
		System.out.println(this.messageController.echo("mldnjava"));
	}
}

【==訪問地址==】/pages/back/admin/member/member_add.action
歡迎mldnjava光臨!
2019-04-07 15:02:32.995  INFO 8308 --- [       Thread-3] o.s.w.c.s.GenericWebApplicationContext   : Closing org.springframework.web.context.support.GenericWebApplicationContext@1e6454ec: startup date [Sun Apr 07 15:02:31 CST 2019]; root of context hierarchy

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