Sto tentando di aggiungere una stringa semplice al mio contesto applicazione Spring e quindi autorizzarla su un bean esistente diverso (A) all'interno del contesto dell'applicazione. So che questo non è il solito modo di andare, ma ho bisogno di aggiungere molti bean a livello di codice, il che altrimenti renderebbe enorme la mia configurazione xml.Aggiunta programmatica di bean all'applicazione Spring Contesto
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;
}
Quando si esegue questa operazione, la proprietà message
dell'istanza di A è nullo. Cosa mi manca?
EDIT: questo è il mio contesto di applicazione:
@Configuration
class TestConfig {
@Bean
public A a() {
return new A();
}
@Bean
public MyPostProcessor postProcessor() {
return new MyPostProcessor();
}
}
E questa è la mia prova:
@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);
}
}
Grazie
grazie. Ancora null. – user152468