У меня есть класс с
Код: Выделить всё
@SpringBootApplication(scanBasePackages = "hu.xyz.spring")
@Command(group = "DeToX base commands")
@ShellComponent
Код: Выделить всё
SpringApplication application = new SpringApplication(any);
context = application.run(args);
Код: Выделить всё
private static void addPackage(String pkg) {
ConfigurableApplicationContext cac = (ConfigurableApplicationContext) Main.ctx();
BeanDefinitionRegistry registry = (BeanDefinitionRegistry) cac.getBeanFactory();
ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(registry);
scanner.scan(pkg);
}
Если я добавляю scanBasePackages для включения pkg, тогда все работает
Контекстом приложения является AnnotationConfigServletWebApplicationContext, и при этом обновление() не может быть вызвано дважды
После addPackage, если я получаюBean("xy"), то выдается исключение, что зависимость отсутствует.
Как я могу или принудительно загрузить новые bean-компоненты как "hu.xyz.apple.spring" в @SpringBootApplication(scanBasePackages = {рядом с остальными ...})
тогда все в порядке!
Почему я не могу выполнить эту среду выполнения? Как я могу сделать так, чтобы пакеты загружались только в том случае, если они мне нужны?
Единственный способ, который я вижу, это легко сделать: контекст родительского-дочернего приложения.
Но тогда у меня возникают проблемы, если я хочу зарегистрировать новую «CammandRegistration» для родителя, я не могу, это работает, но не регистрируется. команда в командной консоли, запущенная родительским контекстом приложения.
Код: Выделить всё
@Bean
public CommandRegistration sync() {
Подробнее здесь: https://stackoverflow.com/questions/798 ... w-packages
Мобильная версия