Кто-нибудь знает, есть ли способ, которым я могу программно создать контекст бина?
Я хочу иметь возможность сделать что-то вроде:
ConfigurableApplicationContext c = new ConfigurableApplicationContext();
BeanDefinition bd = new BeanDefinition();
bd.setId("id");
bd.setClassName("classname");
bd.setProperty("propertyName", propertyValue");
...etc...
или, что еще лучше, можно добавить готовый компонент в контекст приложения:
c.addBean("beanId", beanObject);
Или, если я использую аннотации:
c.setAnnotationAware(true);
c.setAnnotationScanBasePackage("packagename");
или
c.addAnnotatedSpringClass("classnamethatisannotated");
Основанием для этого является то, что я хочу иметь возможность переопределять определения bean-компонентов для целей тестирования. В своем тесте я создаю этот новый контекст приложения, настроенный с помощью кода в тесте (не в xml), а затем создаю это тестовое приложение. у контекста есть родительский контекст приложения SUT.
Я не нашел ни одного кода в библиотеках Spring, который мог бы сделать это. Кто-нибудь построил что-то подобное? Можно ли построить что-то подобное? Я знаю, что первый подход выполним, но я не уверен на 100%, что второй подход будет работать без условий.