SpringBoot自动配置详解
按照“约定大于配置”的原则,Spring Boot通过扫描依赖关系来使用类路径中可用的库。
对于眉哥哥pom文件中的“spring-boot-starter-*”依赖,Spring Boot会执行默认的AutoConfigurarion类。此类使用*AutoConfiguration词法模式自动配置
使用“--dubug‘运行应用程序可以查看自动配置的相关报告
$ java -jar bulid/libs/spring-boot-rest-1.0.0.jar -- debug
排除某些库的自动配置
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
使用自定义端口:
server.port=8081
更换配置文件的位置:
默认情况下,Spring Boot将所有配置外部化到application.properties文件中。此外,可以设置从外部读取属性
spring.config.name:配置文件名
spring.config.location:配置文件位置
自定义配置:
配置文件:file.name=hahaha
java文件中获取属性:
@Value("${file.name}")
使用.yaml作为配置文件(eclipse排版注意不要用tab键)
spring:
application:
name:walang
datasource:
url:...
profiles:
不同的环境使用不同的配置(spring cloud推荐使用配置中心)。
application.properties配置激活文件(放在主类或者jar之前):
spring.profiles.active=production
.properties能够平坦化映射,可以用 application-${profile}.properties 的方式来指定特定于配置文件的值
yaml文件用 "---"行 分割文档序列,每个文档分别解析为平坦化的映射
server:
port:9000
---
spring:
profiles:development
server:
port:9001
---
spring:
profiles:production
server:
port:0909
内嵌Servlet容器
Spring Boot包括支持嵌入式Tomcat、Jetty和Undertow服务器,默认嵌入式服务将侦听8080端口上的HTTP请求
注册Servlet、过滤器和监听器
如果惯例的映射不够灵活,可以通过ServletRegistrationBean,FilterRestrationBean,ServletListenerRestrationBean类来进行完全控制
Servlet上下文初始化
如果需要在Spring Boot执行Servlet上下文初始化,则应注册一个实现org.springframework.boot.web.servlet.ServletContextInitializer接口的bean。OnStartup方法提供对ServletContext的访问。
当使用嵌入式容器时,可以使用@ServletComponentScan来自动注入启用@WebServlet,@WebFilter,@WebListener注解的类
注意:@ServletComponentScan在独立部署的容器中不起作用,因为独立部署的容器中使用容器内置的发现机制