如何在Spring项目中使用@Controllers属性对所有类进行计数

时间:2019-02-22 11:00:49

标签: java spring hibernate spring-mvc

一次面试官问我这个问题,我无法回答。我也在Google上进行了搜索,但没有得到正确的答案。

3 个答案:

答案 0 :(得分:4)

请尝试使用下面给出的代码。

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

,或者您可以通过反射库尝试一下。下面给出的代码段可以在整个项目中进行搜索。

maven依赖项:

  

      组织反射       思考       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
    }
}}

答案 1 :(得分:1)

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());
    }

}

答案 2 :(得分:1)

这肯定取决于您尝试计算Controller bean的方式。

编程方式

如果您要通过自定义部署的实用程序对bean进行计数,那么先前建议的解决方案将是一个很好的选择(即,所实现的方法应该在能够运行时访问ApplicationContext的类中)。

与此同时,您应注意有条件部署的Controller bean。

弹簧执行器

如果您激活了 Spring Actuator 并启用了bean检查,则只需点击部署的端点即可获取可用bean,并过滤 JSON 输出以获取{ {1}}豆。