2005年8月16日

Spring。

こんばんは、あに山@習うより慣れろです。

ここんとこのテーマは、Spring。

Springってーと、DIコンテナが肝?な訳ですが…って
DIって何よ?ってーと「依存性の注入」とかゆー曖昧さ。

もし外人が覚えたての日本語を駆使して会話中に
「イゾンセイ ノ チュウニュウ デース」とか言ったら
何言ってんだ、この外人…って思われる率87%な感じで
非常にとっつきにくい日本語だと思うんですが(笑)

確かに、どーにもこーにも、こればかりは
特にプログラマー以外に対して
簡単に表現するのは無理そうであります。

とりあえず、一番わかりやすい説明はここかなぁ…。

なにはともあれ、ちびっといじった簡単な操作をメモ。
あくまでメモです。解説はありません(^^;

それにしても、WEB+DB PRESS vol.27 の P.19からの
「DIで作る変更に強いビジネスロジック」は良い記事でした。
DIのみならず、DTOの使いどころもわかりやすかったし。
なんかモヤモヤしてたもんが、ちょっとスッキリしました(^-^)

おまけ。

Spring AOP with Hibernate by Spring-days
翻訳です。世の中翻訳してくれる方々に感謝。

日英対照javacのエラーメッセージ解説つき
世の中便利なもん用意してくれる方々に感謝。

J2SE5.0虎の巻 - XML に対応した Properties
java.util.Properties について。

Java Eclipse Extension Project
「文字エンコーディング - JSP や Java に記述した特殊文字に対する文字エンコーディングについて、問題となりやすいケースなどを解説します」だそうです。

Java 国際化 FAQ
国際化について。…って、これ以前リンクしたっけ???

初歩なSpringいじりの内容。

2つのクラスのインスタンス生成を
Bean定義ファイルで設定しちゃうぞの巻。
-----------------------------------------


package model;

import java.util.List;

public class Person {
private String name;
private List hobbyList;

/**
* 名前を返す
* @return 名前
*/
public String getName() {
return name;
}

/**
* 名前をセットする
* @param name 名前
*/
public void setName(String name) {
this.name = name;
}

/**
* 趣味オブジェクトのリストを返す
* @return 趣味オブジェクトのリスト
*/
public List getHobbyList() {
return this.hobbyList;
}

/**
* 趣味オブジェクトのリストをセットする
* @param hobbyList 趣味オブジェクトのリスト
*/
public void setHobbyList(List hobbyList) {
this.hobbyList = hobbyList;
}
}


-----------------------------------------

package model;

public class Hobby {
private String name;

/**
* 趣味の名前を返す
* @return 趣味の名前
*/
public String getName() {
return name;
}

/**
* 趣味の名前をセットする
* @param name 趣味の名前
*/
public void setName(String name) {
this.name = name;
}
}


-----------------------------------------


Bean定義ファイル「applicationContext.xml」
勿論、Listの値も設定出来るんです。
-----------------------------------------


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="anigon" class="model.Person">
<property name="name">
<value>あにごん</value>
</property>
<property name="hobbyList">
<list>
<ref bean="programming" />
<ref bean="german" />
<bean class="model.Hobby">
<property name="name">
<value>人間観察</value>
</property>
</bean>
</list>
</property>
</bean>
<bean id="kukumama" class="model.Person">
<property name="name">
<value>くくまま</value>
</property>
<property name="hobbyList">
<list>
<ref bean="programming" />
<ref bean="dance" />
</list>
</property>
</bean>

<bean id="programming" class="model.Hobby">
<property name="name">
<value>プログラミング</value>
</property>
</bean>
<bean id="german" class="model.Hobby">
<property name="name">
<value>独語</value>
</property>
</bean>
<bean id="dance" class="model.Hobby">
<property name="name">
<value>ダンス</value>
</property>
</bean>
</beans>


-----------------------------------------
テスト用 mainクラス
-----------------------------------------

package test;

import java.util.Iterator;

import model.Hobby;
import model.Person;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

public class Main {

public static void main(String[] args) {
Resource res = new ClassPathResource("applicationContext.xml");
XmlBeanFactory factory = new XmlBeanFactory(res);

Person anigon = (Person) factory.getBean("anigon");
System.out.println(anigon.getName());
showHobby(anigon);

Person kukumama = (Person) factory.getBean("kukumama");
System.out.println(kukumama.getName());
showHobby(kukumama);

}

private static void showHobby(Person person) {
Iterator iterator = person.getHobbyList().iterator();
while (iterator.hasNext()) {
Hobby hobby = (Hobby)iterator.next();
System.out.println(hobby.getName());
}
}
}


-----------------------------------------
結果:

あにごん
プログラミング
独語
人間観察
くくまま
プログラミング
ダンス

-----------------------------------------
…って、これのどこが便利なのか?
とか言われると困る。
なんでも使いようなのだー(?)。

Posted by anigon at 12:34 AM

「気合で採血6。」へ戻る | 「頭をもみもみ。」へ進む

上へ戻る