我想向我的Spring應用程序上下文添加一個簡單的字符串,然後將其自動裝入到應用程序上下文中的不同現有bean(A)。我知道這不是通常的方式,但我需要以編程方式添加許多bean,否則會使我的xml配置變得非常龐大。以編程方式向Spring應用程序添加Bean上下文
public class MyPostProcessor implements BeanFactoryPostProcessor, Ordered {
@Override
public int getOrder() {
return 0;
}
@Override
public void postProcessBeanFactory(
ConfigurableListableBeanFactory beanFactory) throws BeansException {
beanFactory.registerSingleton("myString", "this is the String");
A a = beanFactory.getBean(A.class);
beanFactory.autowireBean(a);
}
}
public class A {
@Autowired
public transient String message;
}
運行此操作時,A實例的屬性message
爲空。我錯過了什麼?
編輯:這是我的應用程序上下文:
@Configuration
class TestConfig {
@Bean
public A a() {
return new A();
}
@Bean
public MyPostProcessor postProcessor() {
return new MyPostProcessor();
}
}
這是我的測試:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TestConfig.class)
public class MyTest {
@Autowired
private transient A a;
@Test
public void test() throws Exception {
System.err.println("Running");
System.err.println("This is the autowired String: " + a.message);
Thread.sleep(1000);
}
}
感謝
謝謝。仍爲空。 – user152468