一、条件注解
以 org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration 为例:
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(ServerProperties.class)
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
@ConditionalOnClass(CharacterEncodingFilter.class)
@ConditionalOnProperty(prefix = "server.servlet.encoding", value = "enabled", matchIfMissing = true)
public class HttpEncodingAutoConfiguration {
.
.
}
HttpEncodingAutoConfiguration 包含了三个条件注解:
-
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
-
@ConditionalOnClass(CharacterEncodingFilter.class)
-
@ConditionalOnProperty(prefix = “server.servlet.encoding”, value = “enabled”, matchIfMissing = true)
HttpEncodingAutoConfiguration 为 spring boot 自动装配的类,那么该类是默认满足条件注解中的条件的;当其中一个或多个条件不满足时,spring boot 则不会自动装配该类
例如修改 @ConditionalOnProperty 中的条件使其条件不满足
application.properties文件
#@ConditionalOnProperty中的 prefix + value = 值
server.servlet.encoding.enabled=false
二、修改默认编码
spring boot 默认编码为 UTF-8 ,将编码改为 ISO-8859-1
@ConditionalOnProperty 中的 prefix + 属性名 = 值
application.properties文件
server.servlet.encoding.charset=ISO-8859-1
三、查看自动装配的类与未自动装配的类
application.properties文件
debug=true
启动 spring boot 后
Positive matches: 已装配的类
Negative matches: :未装配的类