Home > スポンサー広告 > Spring Framework 3.0の新機能 Part1

スポンサーサイト

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

Comments:-

Comment Form

Trackback+Pingback:-

TrackBack URL for this entry
http://netforestdevnote.blog26.fc2.com/tb.php/4-bd12465f
Listed below are links to weblogs that reference
スポンサーサイト from Netforest Developer's Note
Trackback from Jungle Java 2009-07-11 (土) 20:12

Jungle Java - Spring Framework 3.0 関連情報メモ

「Spring Framework 3.0」 の関連情報をメモ。φ(..) (more…)

Home > スポンサー広告 > Spring Framework 3.0の新機能 Part1

Home > Springframework > Spring Framework 3.0の新機能 Part1

Spring Framework 3.0の新機能 Part1

どーも、take©です。
JavaのDIコンテナであるSpring Framework 3.0 M2がリリースされたので、気になる新機能をまとめました。

Bean定義ファイルでEL式のサポート

新機能の目玉の1つです。Bean定義ファイルに #{Bean名.メソッド名} といったような表記で、メンバ変数やメソッドの戻り値をDIできるというものです。 これは確かにほしかった機能です。 BeanそのものをDIしてからメソッドを呼び出せばいいような気もしますが、よりオブジェクト間を粗結合にするために最小限のデータ構造をDIさせることは良いことだと思います。

<bean id="sampleBean1" class="sample.SampleBean1"/>

<bean id="sampleBean2" class="sample.SampleBean2">
	<property name="greeting" value="#{sampleBean1.sayHello()}"/>
</bean>

@Valueアノテーションの追加

上記の「Bean定義ファイルでEL式のサポート」を見てアノテーションではできないのか、と心配された方、ご安心下さい。 @Valueアノテーションによって、アノテーションで記述する方法もきっちりサポートされています。 Bean名やメソッド名がタイプセーフでないのが気になりますが、今後SpringIDEによってサポートされることを期待します。

SampleBean1.java
@Component
public class SampleBean1
{
	public String sayHello()
	{
		return "hello!";
	}
}
SampleBean2.java
@Component
public class SampleBean2
{
	@Value("#{sampleBean1.sayHello()}")
	private String greeting;
	
	public void printGreeting()
	{
		System.out.println(greeting);
	}
}

@PathVariableアノテーションの追加

SpringSource TeamBlogではURI Templateという言い方をしていますが、Spring MVCにおいてURIの一部をメソッドパラメータにバインドできるというものです。 リソースをGETパラメータではなく、ディレクトリ構成で表現したい、といったおしゃれなURL設計をしたい場合は最適です。

@RequestMappingで {} で囲った部分が@PathVaribaleで定義した同じ名前の変数にバインドされます。 今までは正規表現でURLをパースしたりしていたのでこれは本当に助かります。

@Controller
public class SampleController
{
	@RequestMapping("/category/{categoryCode}/item/{itemCode}")
	public String doSample(
		@PathVariable String categoryCode,
		@PathVariable String itemCode)
	{
		System.out.println(categoryCode);
		System.out.println(itemCode);
		// do something...
	}
}

こんな風にDateにバインドすることも可能です。

@Controller
public class SampleController
{
	@InitBinder
	public void initBinder(WebDataBinder binder)
	{
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		binder.registerCustomEditor(Date.class, new CustomDateEditor(format, false));
	}
	
	@RequestMapping("/news/{date}.html")
	public String doSample(@PathVariable Date date, Model model)
	{
		System.out.println(date);
		// do something...
	}
}

@RequestHeaderアノテーションの追加

リクエストヘッダがメソッドパラメータのアノテーションで取得できるようになりました。
リファラの取得など今までRequestから取得していたのが少し楽になる程度かな。

@Controller
@RequestMapping("/samle")
public class SampleController
{
	@RequestMapping
	public String doSample(
		@RequestHeader("User-Agent") String ua,
		@RequestHeader(value="Referer", required=false) String referer)
	{
		System.out.println(ua);
		System.out.println(referer);
		// do something...
	}
}

@RequestParamにdefaultValueが追加

なんで今までなかったのかという気がしますが、@RequestParamにデフォルト値が設定できるようになりました。

@Controller
@RequestMapping("/sample")
public class SampleController
{
	@RequestMapping
	public String doSample(@RequestParam(value="id", defaultValue="10") int id)
	{
		System.out.println(id);
		// do something...
	}
}

ETagサポート

ShallowEtagHeaderFilterが追加されました。 ETagの出力部分は今まで自作していましたが、その必要がなくなりそうですね。 ETagを使用することでブラウザのキャッシュが有効利用され、クライアント側では表示が速くなり、サーバ側でもトラフィックの軽減になります。 ちなみにETagの算出方法はレスポンスボディのMD5値を採用しているようです。

以下はその使用例です。web.xmlにfilter登録をするのみです。

<web-app>
	<!-- skip -->
	<filter>
		<filter-name>ShallowEtagHeaderFilter</filter-name>
		<filter-class>org.springframework.web.filter.ShallowEtagHeaderFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>ShallowEtagHeaderFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- skip -->
</web-app>


今回取り上げたものは新機能の一部ではありますが、機会があれば他の機能も紹介したいと思います。

[SpringSource TeamBlog]
http://blog.springsource.com/2008/12/05/spring-framework-30-m1-released/
http://blog.springsource.com/2009/02/25/spring-framework-30-m2-released/
http://blog.springsource.com/2009/03/08/rest-in-spring-3-mvc/

Comments:0

Comment Form

Trackback+Pingback:1

TrackBack URL for this entry
http://netforestdevnote.blog26.fc2.com/tb.php/4-bd12465f
Listed below are links to weblogs that reference
Spring Framework 3.0の新機能 Part1 from Netforest Developer's Note
Trackback from Jungle Java 2009-07-11 (土) 20:12

Jungle Java - Spring Framework 3.0 関連情報メモ

「Spring Framework 3.0」 の関連情報をメモ。φ(..) (more…)

Home > Springframework > Spring Framework 3.0の新機能 Part1

Recent Comments
Recent Trackback
Search
Meta
Links
Feeds

Page Top

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