我想在Spring启动应用程序中排除所有未使用的配置。问题是我不知道哪一个使用哪个不使用。
是否可以在运行时获取Spring引导应用程序中使用的所有配置并将它们写入从max(i - 1, 1)
注释中读取的文件?如果不是有另一种方法可以做这样的事情吗?
答案 0 :(得分:1)
我个人认为你应该使用Spring-Boot,因为大多数(如果不是全部)自动配置只有在类路径上找到某个类时才会启用。
我不知道这是不是一个好主意,但是 可以完全跳过自动配置而不使用val mostActiveUser = followCount.sortBy(- _._2).head
和/或@SpringBootApplication
。
相反,将Spring Boot入口点定义为普通bean,@EnableAutoConfiguration
和@ComponentScan
您选择的自动配置类:
@import
您可以导入所需的配置,而不是让AutoConfiguration启动配置(基于类路径上某些类的@Conditional存在)。
@ComponentScan(excludeFilters = @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class))
@Import({EmbeddedServletContainerAutoConfiguration.class})
public class Launcher {
public static void main(String[] args) {
SpringApplication.run(Launcher.class, args);
}
}
请注意,在您意识到并添加其自动配置之前,这可能会导致您禁用某些基本功能。
您将在@Import({EmbeddedServletContainerAutoConfiguration.class,
HttpMessageConvertersAutoConfiguration.class,
DispatcherServletAutoConfiguration.class,
ConfigurationPropertiesAutoConfiguration.class,
ServerPropertiesAutoConfiguration.class,
WebMvcAutoConfiguration.class,
MessageSourceAutoConfiguration.class,
PropertyPlaceholderAutoConfiguration.class})
中找到自动配置类列表:
spring-boot-autoconfigure-xxx.jar/META-INF/spring.factories