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 件のコメント:
コメントを投稿