DynamicApplicationContext
また需要のなさそうなものを作ってしまった。
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";
}}
何がやりたいかって言うとBeanに内包したインタフェイスのインスタンス生成を動的な条件で行いたいってこと。
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());
}}