Spring Boot中文手册(5):配置类与自动配置

 该系列的文章主要参考Spring Boot 2.1.2.RELEASE的官方文档来进行翻译,逐步将官方文档翻译过来,方便大家共同学习和讨论,但是毕竟能力有限,如有问题,感谢大家留言指正。

1 配置类

Spring Boot提倡使用基于Java的配置,虽然使用XML文件配置也是可以的,但是我们建议你使用一个单独的 @Configuration 类作为主要源配置。一般定义 main 方法的那个类是作为主要配置类的较佳选择。

许多已经被发布到网上的Spring配置工程都是使用xml配置来实现的。如果可以的话,建议还是使用相应的基于Java配置的形式来实现。你可以搜索以“Enable*”开头的注解,来查看是否有合适的注解供你使用。

1.1 引入其他配置类

你并不需要将所有的配置都放到同一个类中。你可以使用 @Import 注解来引入其他配置类,除此方法外,你也可以使用 @ComponentScan 这个注解来让Spring扫描所有代码 @Configuration 注解的类,然后自动引入。

1.2 引入XML配置

如果你现在不得不必须使用基于XML的配置了,我们仍然建议你使用一个注解了 @Configuration 的类,然后使用 @ImportResource注解将你的XML配置文件加载进来。

2 自动配置

Spring Boot会尝试基于你已经引入的Jar包依赖来自动配置你的Spring应用。比如,如果你的依赖中包含 HSQLDB,但是你并没有手动配置任何数据库连接类,Spring Boot会自动配置一个内存数据库。

你需要增加 @EnableAutoConfiguration 注解或者 @SpringBootApplication 注解两者之一到你的 @Configuration配置类上,才能启动自动配置功能。

如果你想使用自动配置特性的话,你必须添加 @SpringBootApplication 或者 @EnableAutoConfiguration两者中的一个,通常我们建议你将这个注解添加在你的主配置类上

2.1 逐步剔除自动配置

首先,自动配置是无侵入性的,但是在任何情况下,你都可以使用你自己的配置来替换到自动配置的的特定部分。比如,如果你已经在你的项目中配置了 DataSource 实体类,默认的内嵌数据库是不会生效的。

如果你想知道当前哪些配置是被自动配置的,你可以在启动你的应用时增加 --debug 这个开关,这样在命令控制台就会输出配置信息的报告。

2.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 {
}

如果你要排除的类并不在classpath中,你可以使用这个注解的 excludeName 属性,指明类的全路径来将其排除。

最后再说明一点,你也可以使用 spring.autoconfigure.exclude 这个配置项来排除自动配置的类清单都包含什么,不包含什么。

上述注解排除方式和属性配置排除方式是可以同时使用的。

END

猜你喜欢

转载自blog.csdn.net/tearofthemyth/article/details/86674975