一次面试官问我这个问题,我无法回答。我也在Google上进行了搜索,但没有得到正确的答案。
答案 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}}豆。