Я видел сотни примеров этого:
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
@SpringBootApplication
@ImportResource("classpath:applicationContext.xml")
public class MySpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(MySpringBootApplication.class, args);
}
}
И вот уже много часов я иду по кроличьей тропе.
Я создаю фреймворк.... и мне нужно загрузить (несколько зависимостей, а не все из них...) из файла внедрения зависимостей xml (он же "beans"):
applicationContext.xml
и мне нужно, чтобы имя было динамическим, а не жестко закодированным.
String myValue = "DefaultEnvVarValue";
String envValue = System.getenv("MYENVVARIABLENAME");
if (null != envValue )
{
myValue=envValue;
}
String topLevelAppContextFileName = "applicationContext." + myValue + ".xml";
Без springboot я бы сделал так:
ApplicationContext context = new ClassPathXmlApplicationContext(topLevelAppContextFileName);
Есть ли способ осуществить это с помощью SpringBoot?
Я нашел PropertySourcesPlaceholderConfigurer для файлов свойств, но ничего не могу найти для внедрения зависимостей.
Примечание:
Прежде чем я получу комментарий «xml bad», большинство моих зависимостей основаны на аннотациях. Но я создаю фреймворк для использования другими, и поэтому мне нужно, чтобы несколько из них управлялись с помощью xml... иначе, у меня есть законная причина, чтобы некоторые из DI управлялись с помощью xml.