Spring 3.0 の JSR-330 と JavaConfig をちょっとだけ試してみた。
====
以下のような2クラスを考える。┌───────┐ ┌─────┐ │ Greeter │ 《dependency》 │ Greeting │ │==============│--------------->│==========│ │greet(person) │ │getWord() │ └───────┘ └─────┘ここで
- Greeting.getWord() メソッドは、挨拶の言葉を返す。
- Greeter.greet() メソッドは、Greeting.getWord() で取得した挨拶の言葉に、引数 person を連結して返す。
@Configuration
public class AppConfig {
@Bean public Greeter greeter() {
return new Greeter();
}
@Bean public Greeting greeting() {
return new Greeting();
}
}
Greeter は以下のようになる。Greeting への依存は @Inject で表現する。public class Greeter {
@Inject
private Greeting greeting;
public String greet(String person) {
return String.format("%s, %s!", greeting.getWord(), person);
}
}
Greeting は、まあ適当public class Greeting {
public String getWord() { return "Hello"; }
}
こんなコードで実行すると、public class App {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
Greeter bean = ctx.getBean(Greeter.class);
System.out.println(bean.greet("Spring3.0"));
}
}
以下のような出力を得るHello, Spring3.0!
■ Eclipse で動かすには- Spring3.0 の dist 下の jar 群をローカル Maven リポジトリに登録する.[参考]
- javax.inject も リポジトリに登録。[download]
mvn install:install-file \ -DgroupId=javax.inject \ -DartifactId=com.springsource.javax.inject -Dversion=1.0.0 \ -Dsources=com.springsource.javax.inject-sources-1.0.0.jar \ -Dfile=com.springsource.javax.inject-1.0.0.jar \ -Dpackaging=jar -DgeneratePom=true
- Eclipse で Maven Project を作成する
- pom に以下の依存を指定
groupId org.springframework artifactId spring-context version 3.0.0.RELEASE groupId cglib artifactId cglib version 2.2 groupId javax.inject artifactId com.springsource.javax.inject version 1.0.0
0 件のコメント:
コメントを投稿