Как посчитать все классы с атрибутом @Controllers в вашем весеннем проекте - PullRequest
0 голосов
/ 22 февраля 2019

Однажды интервьюер задал мне этот вопрос, и я не смог на него ответить.Я также искал в Google, но не получил никакого правильного ответа.

Ответы [ 3 ]

0 голосов
/ 22 февраля 2019
This may helpful...

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        ApplicationContext applicationContext =SpringApplication.run(DemoApplication.class, args);

        Map<String,Object> beans = applicationContext.getBeansWithAnnotation(Controller.class);
        System.out.println(beans.size());
    }

}
0 голосов
/ 22 февраля 2019

Это, безусловно, будет зависеть от того, как вы будете пытаться сосчитать ваши Controller бобы.

Способ программирования

Предложенное ранее решение подойдет, если вы будете считать свойbean-компоненты с помощью развернутой пользовательской утилиты (т. е. реализованный метод должен иметь класс, способный обращаться к ApplicationContext во время выполнения).

При этом следует обратить внимание на Controller bean-компонентов, которые развернуты условно.

Spring Actuator

Если у вас активирован Spring Actuator и включен контроль компонентов, вы можете просто нажать на развернутую конечную точку, чтобы получить доступные компоненты и отфильтровать JSON вывод, чтобы получить *Controller бобов.

0 голосов
/ 22 февраля 2019

Пожалуйста, попробуйте ниже приведенный код.

Map<String,Object> beans = ctx.getBeansWithAnnotation(Controller.class);
System.out.println(beans.size());

или вы можете попробовать это с библиотекой отражений.Ниже приведенный фрагмент может выполнять поиск по всему проекту.

Зависимость maven:

org.reflections отражений 0.9.10

import org.reflections.Reflections;

public class FindAnnotation {


public static void main(String[] args) {
    System.out.println("Scanning using Reflections:");

    Reflections ref = new Reflections("com.some.package");
    for (Class<?> cl : ref.getTypesAnnotatedWith(Controller.class)) {
        //count
    }
}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...