Comment fait-on créer par programmation un Printemps contexte?

Personne ne sait si il existe un moyen de créer par programmation un haricot contexte?

Je veux être en mesure de faire quelque chose comme:

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

ou, mieux encore, être capable d'injecter un haricot dans le contexte de l'application:

c.addBean("beanId", beanObject);

Ou si je suis en utilisant des annotations:

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

ou

c.addAnnotatedSpringClass("classnamethatisannotated");

La raison pour cela est que je veux être en mesure de remplacer bean définitions aux fins de tests - Dans mon test j'ai créer ce nouveau contexte d'application, configuré avec le code dans le test (pas en xml), et puis faire ce test de contexte de l'application en tant que parent le SUT contexte de l'application.

Je n'ai pas trouvé de code dans le printemps des bibliothèques qui peuvent le faire. Quelqu'un a construit quelque chose comme cela? Serait-il possible de construire quelque chose comme ça? Je sais que la première approche est faisable, je ne suis pas sûr à 100% la dernière approches seront sans conditions.

  • Est-il une raison de ne pas l'utiliser XML pour le test de haricots définitions? Spring fournit de l'unité de soutien d'essai exactement pour ce genre de chose.
  • Problème avec le xml, c'est que c'est un peu lourd. Prend trop de temps pour créer le xml et il semble un peu trop pour ce que vous essayez d'atteindre.
  • Bienvenue dans le monde de Java, mec.
  • Je pense que nous parlons des Tests d'Intégration, tests unitaires sont beaucoup plus simple 🙂