Модульное приложение Spring Boot, динамическое сканирование новых пакетовJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Модульное приложение Spring Boot, динамическое сканирование новых пакетов

Сообщение Anonymous »

Я просто не могу понять это правильно:
У меня есть класс с

Код: Выделить всё

@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);
}
В пакете есть bean-компонент с именем «xy», и для него нужны bean-компоненты, определенные в том же пакете в @Configuration.
Если я добавляю 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»