1.自动配置
1.1起步依赖
使用起步依赖,就省去了很多自己配置的问题。
起步依赖本质上是一个Maven项目对象模型,定义了对其他库的传递依赖,
这些东西加在一起即支持某项功能。
很多起步依赖的命名都暗示了它们提供的某种或某类功能。
使用默认的依赖可以满足大部分的情况。
如果想要覆盖起步依赖引入的传递依赖,
如果在用Gradle,你可以这样排除传递依赖:
compile("org.springframework.boot:spring-boot-starter-web") {
exclude group: 'com.fasterxml.jackson.core'
}
如果在maven里:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
</exclusion>
</exclusions>
</dependency>
1.2自动配置
Spring Boot的自动配置是一个运行时
(更准确地说,是应用程序启动时)的过程,
考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。
在ClassPath中有的,则自动配置。
需要实现Condition接口,重写matches()方法。
2.自定义配置
虽然大部分情况下,Spring Boot的自动配置可以满足我们的需求。但是总有一些无法满足,需要我们自己去定义。
Spring Boot的设计是加载应用级配置,随后再考虑自动配置类。
2.1 显式的配置
@Configuration
除Spring Boot自动配置以外的其他Spring配置,组件扫描器会发现并使用该类。
@ConditionalOnMissingBean 显式覆盖的关键
但是这种方法显然有些太过于大张旗鼓,我们可以通过属性文件微调配置。
2.2 属性文件外置配置
设置application.properties微调配置
application.properties文件能放在以下四个位置。
(1) 外置,在相对于应用程序运行目录的/config子目录里。
(2) 外置,在应用程序运行的目录里。
(3) 内置,在config包内。
(4) 内置,在Classpath根目录。
同样,这个列表按照优先级排序。也就是说,/config子目录里的application.properties会覆盖
应用程序Classpath里的application.properties中的相同属性。
举个栗子:
server.port=52001 指定端口号
logging.config=classpath:log4j2-spring.xml 日志配置
logging.level.root=DEBUG 日志级别