我们知道有注释会自动包含其他注释
你能否告诉我如何检查@EnableAutoConfiguration
是否包含(这意味着增加了内容)@EnableTransactionManagement
提前致谢, 此致
答案 0 :(得分:0)
我认为你可以这样做:
ClassPathScanningCandidateComponentProvider scanner =
new ClassPathScanningCandidateComponentProvider(false);
scanner.addIncludeFilter(new AnnotationTypeFilter(EnableAutoConfiguration.class));
for(BeanDefinition bean:scanner.findCandidateComponents("PACKAGES TO SCAN")){
Class<?> aClass=Class.forName(bean.getBeanClassName());
`// you can also use aClass.getAnnotatedInterfaces() to find the other` annotations
if(aClass != null && aClass.isAnnotationPresent(EnableTransactionManagement.class)){
System.out.println(" Found "+aClass.getName());
}
}
答案 1 :(得分:0)
Spring Boot可以为您提供它创建的所有bean的列表,以及有关它选择包含/排除它们的原因的一些信息。只需设置属性debug=true
并在启动时观察记录的输出。此视频演示了这一点:https://www.youtube.com/watch?v=Sw7I70vjN0E&list=WL&t=615
我不知道它是否会专门打印出@Enable...
注释,但这些注释通常只为某些配置提供@Import
注释。查看@EnableTransactionManagement
的来源,我看到了:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(TransactionManagementConfigurationSelector.class)
public @interface EnableTransactionManagement {
如果你使用debug属性,Spring肯定会打印出它是否创建了一个TransactionManagementConfigurationSelector
bean,它应该告诉你应用程序中是否使用了@EnableTransactionManagement
。
答案 2 :(得分:0)
spring-boot-autoconfigure- {whatever-is-ur-bootversion}的META-INF中有spring.factories .jar
打开spring.factories并查看 EnableAutoConfiguaration注释等于许多逗号分隔的配置文件。并根据您的初学者自动加载特定的配置文件。
您可以打开这些文件并进行评估。