スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Spring MVC プロパティファイルを使用する

今回はプロパティファイルより値を取得してみる。

今までは、JSP側でメッセージを取得するためにプロパティファイルを使用するパターンだったが、今回はロジック内で使用したいと思う。値をプロパティファイルから取得するパターンとしては、閾値などが考えられる。

今回のサンプルでは、ファイルアップロード[入力チェック編]の記事で、TODOとしていたファイルサイズ上限値のバイト数をプロパティファイルより取得するように変更してみたいと思う。

■ファイルアップロード[入力チェック編]の記事
Spring MVC ファイルアップロードを実装する[入力チェック編]

◎動作検証にあたっての各バージョンは以下の通り
  • SpringFramework 3.2.8.RELEASE
  • Java 1.7
  • Tomcat 7.0

1.application.properties

upload.fileSize=60000

ファイルサイズ上限値のバイト数を60000とする。(ファイルアップロード[入力チェック編]と異なる値にしている。)

2.mvc-config.xml(関連箇所のみ掲載)

<context:property-placeholder location="classpath:i18n/*.properties"/>

この1行を追加するだけでよい。
対象のプロパティファイルはワイルドカード「*」を使うことにより、「i18n」フォルダにあるプロパティファイルを対象とするように定義している。「1.application.properties」はこの定義の通り、「i18n」フォルダに格納している。

3.BookController.java(関連箇所のみ掲載)

package jp.co.sample.book.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
//他のimport文は省略

@Controller
@RequestMapping("/book")
public class BookController {

private static Logger logger = LoggerFactory.getLogger(BookController.class);

@Value("${upload.fileSize}")
private int uploadFileSize;

@Autowired
protected BookService<BookEntity> bookService;

  //他のメソッドは省略

@RequestMapping(value = "/create", method = RequestMethod.POST)
public String create(@Valid BookForm form, BindingResult result, Model model,
@RequestParam(value="uploadFile",required=false) MultipartFile file) {

logger.info("create start");
if (file.getSize() > uploadFileSize) {
result.rejectValue("cover", "error.fileSize",
new Object[]{uploadFileSize},"File size error");
}
if (result.hasErrors()) {
return "newBook";
}

if (!file.isEmpty()) {
byte[] fileContent = null;
InputStream is = null;
try {
is = file.getInputStream();
fileContent = IOUtils.toByteArray(is);
form.setCover(fileContent);
} catch (IOException e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(is);
}
}

BookEntity entity = BookUtil.copyProperties(form);
bookService.addEntity(entity);
model.addAttribute("book", entity);
return "result";
}
}

今回プロパティファイルより値を取得する方法として、@Valueアノテーションを使用している。value属性値には、取得したい値のキーを${ }で囲む。これでuploadFileSizeに値が設定され、以降のロジックで使用できる。

4.登録画面
プロパティ_エラー

今回新たに@Valueアノテーションが登場したが、使うための設定が少なく、@Autowiredアノテーションと同じような感覚で手軽に使用できた。

■過去のSpring関連記事
Spring関連記事 Index

スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

bookmount8

Author:bookmount8
システムエンジニア。サーバーサイドでjavaを扱うことが多い。最近は、ミドルやフロント周りも関心あり。

最新記事
カテゴリ
検索フォーム
最新コメント
月別アーカイブ
これまでの訪問者数
ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。