wildcatsの日記

赤羽在住でIT関係の会社の社長やってます。

DynamicApplicationContext

また需要のなさそうなものを作ってしまった。







com.pragmaticengine.spring.context.Bar



((Integer) args).intValue() == 1





((Integer) args).intValue() == 2













package com.pragmaticengine.spring.context;

public class Foo {

private Bar bar;

public void setBar(Bar bar) {
this.bar = bar;
}

public Bar getBar() {
return this.bar;
}
}


package com.pragmaticengine.spring.context.impl;

import com.pragmaticengine.spring.context.Bar;

public class Bar1 implements Bar {

public String getMessage() {
return "Bar1";
}

}


package com.pragmaticengine.spring.context.impl;

import com.pragmaticengine.spring.context.Bar;

public class Bar2 implements Bar {

public String getMessage() {
return "Bar2";
}

}


public class DynamicApplicationContextImplTest extends TestCase {

public void testGetBeanStringObjectArray() {
ApplicationContext context = new ClassPathXmlApplicationContext(
"/applicationContext.xml");
DynamicApplicationContext dynamicContext = (DynamicApplicationContext) context
.getBean("dynamicApplicationContext");
dynamicContext.setApplicationContext(context);
Foo foo = (Foo) dynamicContext.getBean("ifoo");
assertNotNull(foo);
assertNull(foo.getBar());
Foo foo1 = (Foo) dynamicContext.getBean("ifoo", 1);
assertNotNull(foo1);
assertNotNull(foo1.getBar());
Bar bar1 = foo1.getBar();
assertNotNull(bar1.getMessage());
assertEquals("Bar1", bar1.getMessage());
Foo foo2 = (Foo) dynamicContext.getBean("ifoo", 2);
assertNotNull(foo2);
assertNotNull(foo2.getBar());
Bar bar2 = foo2.getBar();
assertNotNull(bar2.getMessage());
assertEquals("Bar2", bar2.getMessage());
}

}

何がやりたいかって言うとBeanに内包したインタフェイスのインスタンス生成を動的な条件で行いたいってこと。