15. 配置类
Spring Boot支持基于java的配置,虽然可以使用XML源的SpringApplication
,但是我们通常建议你的主源是一个@Configuration
类。通常,定义main
方法的类是一个很好的候选者,作为主要的@Configuration
。
许多Spring配置示例已经在Internet上发布,它们使用XML配置。如果可能,始终尝试使用等效的基于java的配置,搜索
Enable*
注解可能是一个很好的起点。
15.1 导入额外的配置类
你不必将所有@Configuration
放入一个类中,可以使用@Import
注解导入额外的配置类,或者,你可以使用@ComponentScan
自动提取所有Spring组件,包括@Configuration
类。
15.2 导入XML配置
如果你必须使用基于XML的配置,我们仍然建议你开始一个@Configuration
类,然后你可以使用一个@ImportResource
注解加载XML配置文件。
16. 自动配置
Spring Boot自动配置尝试根据你添加的jar依赖项自动配置Spring应用程序,例如,如果HSQLDB
在你的类路径上,并且你没有手动配置任何数据库连接bean,那么Spring Boot将自动配置一个内存中的数据库。
你需要将@EnableAutoConfiguration
或@SpringBootApplication
注解选择的添加到你的其中一个@Configuration
类中。
你应该只添加一个
@SpringBootApplication
或
@EnableAutoConfiguration
注解,我们通常建议只在主
@Configuration
类中添加其中一个或另一个。
16.1 逐渐取代自动配置
自动配置非侵入性,在任何时候,你都可以开始定义自己的配置来替换自动配置的特定部分。例如,如果你添加了自己的DataSource
bean,默认的嵌入式数据库支持就会后退。
如果你需要了解哪些自动配置当前正在应用以及为什么,使用--debug
开关启动应用程序,这样做可以为一些核心日志记录器选择调试日志,并将条件报告记录到控制台。
16.2 禁用特定类的自动配置
如果你发现你不想要的特定的自动配置类正在被应用,你可以使用@EnableAutoConfiguration
的排除属性来禁用它们,如下例所示:
import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.context.annotation.*;
@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}
如果类不在类路径上,则可以使用注解的excludeName
属性,并指定完全限定的名称。最后,你还可以通过使用spring.autoconfigure.exclude
属性来控制要排除的自动配置类的列表。
你可以在注解级别和使用属性定义排除。