Ich versuche, einen einfachen String zu meinem Spring-Anwendungskontext hinzuzufügen und ihn dann automatisch an eine andere vorhandene Bean (A) innerhalb des Anwendungskontextes anzuhängen. Ich weiß, dass dies nicht der übliche Weg ist, aber ich muss programmatisch viele Beans hinzufügen, was meine XML-Konfiguration sonst sehr groß machen würde.Programmgesteuertes Hinzufügen von Beans zur Spring-Anwendung Kontext
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;
}
Wenn dies ausgeführt wird, die Eigenschaft message
der Instanz von A ist null. Was vermisse ich?
EDIT: Das ist mein Anwendungskontext:
@Configuration
class TestConfig {
@Bean
public A a() {
return new A();
}
@Bean
public MyPostProcessor postProcessor() {
return new MyPostProcessor();
}
}
Und das ist mein Test:
@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);
}
}
Dank
danke. Immer noch null. – user152468