Wie macht man programmgesteuert erstellen Sie ein Spring-Kontext?

Weiß jemand, ob es irgendeine Möglichkeit, dass ich programmgesteuert erstellen Sie eine bean-Kontext?

Ich möchte in der Lage sein, etwas zu tun:

ConfigurableApplicationContext c = new ConfigurableApplicationContext();
BeanDefinition bd = new BeanDefinition();
bd.setId("id");
bd.setClassName("classname");
bd.setProperty("propertyName", propertyValue");
...etc...

oder noch besser in der Lage sein, zu injizieren eine fertige Bohne in der Anwendung Kontext:

c.addBean("beanId", beanObject);

Oder wenn ich mit Anmerkungen:

c.setAnnotationAware(true);
c.setAnnotationScanBasePackage("packagename");

oder

c.addAnnotatedSpringClass("classnamethatisannotated");

Der Grund dafür ist, dass ich in der Lage sein möchten, überschreiben bean-Definitionen für die Zwecke der Prüfung - In meinem test habe ich diesem neuen Kontext Anwendung, konfiguriert mit dem code in der test - (nicht xml -) und dann diese test-Anwendung Kontext haben als Eltern die SUT Applikation Kontext.

Ich habe nicht gefunden, einen code in die spring-Bibliotheken, die das können. Hat jemand errichtet so etwas? Wäre es möglich etwas zu bauen, wie? Ich weiß, der erste Ansatz ist machbar, ich bin mir nicht 100% sicher, dass die letztere Ansätze funktionieren, ohne Bedingungen.

Gibt es einen zwingenden Grund nicht verwenden XML für die test-bean-Definitionen? Der Frühling bietet unit-test-Unterstützung für genau diese Art der Sache.
Problem bei xml ist, dass es ein wenig schwer. Dauert zu lange zum erstellen der xml-und es scheint ein wenig zu viel für das, was Sie zu erreichen versuchen.
Willkommen in der Welt von Java, dude.
Ich denke, wir reden über Integration-Tests, unit-Tests sind viel einfacher 🙂

InformationsquelleAutor Michael Wiles | 2009-06-10

Schreibe einen Kommentar