Spring Boot 入门指南:从基础到实践
Spring Boot 入门指南:从基础到实践
dong4jSpring Boot 为什么建议将 main 类放在所有类所在包的顶层
通常建议将应用的 main 类放到其他类所在包的顶层 (root package),并 将 @EnableAutoConfiguration 注解到你的 main 类上,这样就隐式地定义了一个 基础的包搜索路径(search package),以搜索某些特定的注解实体(比如 @Service,@Component 等) 。例如,如果你正在编写一个 JPA 应用,Spring 将 搜索 @EnableAutoConfiguration 注解的类所在包下的 @Entity 实体。
采用 root package 方式,你就可以使用 @ComponentScan 注解而不需要指 定 basePackage 属性,也可以使用 @SpringBootApplication 注解,只要将 main 类放到 root package 中。
@SpringBootApplication 等同于以默认属性使用一下注解:
- @EnableAutoConfiguration
- @ComponentScan 扫描所有 Spring 组件 (@Component , @Service , @Repository , @Controller),包括 @Configuration 类。
- @Configuration
自定义属性
@SpringBootApplication(exclude = {}, excludeName = {}, scanBasePackages = {}, scanBasePackageClasses = {})
构造器注入
- @Autowired 可省略
- 注入的 bean 可以为 final
1 |
|
开发者工具
1 | <!-- 热部署 --> |
application.properties 配置
1 | #添加那个目录的文件需要restart |
在运行一个完整的,打包过的应用时,开发者工具(devtools)会被自动禁用。 如果应用使用 java -jar 或特殊的类加载器启动,都会被认为是一个产品级的应 用(production application),从而禁用开发者工具。为了防止 devtools 传递到项 目中的其他模块,设置该依赖级别为 optional 是个不错的实践
Spring Loaded 或 JRebel 项目
http://blog.csdn.net/JE_GE/article/details/53326525
http://blog.csdn.net/isea533/article/details/70495714
spring boot 远程调试
FailureAnalyzer
https://docs.spring.io/spring-boot/docs/2.0.0.M5/reference/htmlsingle/#howto-failure-analyzer
自定义 Banner
自定义 SpringApplication
1 | public static void main(String[] args) { |
Application 事件和监听器
Admin 特性
通过设置 spring.application.admin.enabled 属性可以启用管理相关的 (admin-related)特性,这将暴露 SpringApplicationAdminMXBean 到平台 的 MBeanServer ,你可以使用该特性远程管理 Spring Boot 应用,这对任何 service 包装器(wrapper)实现也有用。
注 通过 local.server.port 可以获取该应用运行的 HTTP 端口。启用该特性时需 要注意 MBean 会暴露一个方法去关闭应用。
Application 属性文件
- 当前目录下的 /config 子目录。
- 当前目录。
- classpath 下的 /config 包。
- classpath 根路径(root)。
配置文件
通过设置启动参数来选择环境, 只需要打一次包, 就可以在不同环境运行
日志
Spring Boot 默认日志框架为 logback, 默认控制台输出
根据日志配置文件的名称选择日志系统
日志系统 | 定制配置 |
---|---|
Logback | logback-spring.xml logback-spring.groovy logback.xml logback.groovy |
Log4j | log4j.properties log4j.xml |
Log4j2 | log4j2-spring.xml log4j2.xml |
JDK (Java Util Logging) | logging.properties |