Sping Boot 入门
简介
简化 Spring 应用开发的框架,对整个 Spring 技术栈的一个大整合,J2EE 一站式解决方案,思想约定大于配置。
创建
打包
1 | <!-- 该插件可以将应用打包成一个可执行的jar包 --> |
1 | [INFO] Building jar: /Users/raohui/Code/springboot-demo/target/springboot-demo-0.0.1-SNAPSHOT.jar |
部署
1 | $ java -jar springboot-demo-0.0.1-SNAPSHOT.jar |
- pom 父项目:真正管理 Spring Boot 应用里面的所有依赖版本
1 | <parent> |
- 场景启动器:Starter
1 | <!-- web模块正常运行所依赖的组件 --> |
1 |
|
- @SpringBootApplication:这个注解说明该类是 Spring Boot 应用的主配置类,Spring Boot 就应该运行这个类的 main 方法来启动应用。
1 | (ElementType.TYPE) |
@SpringBootConfiguration:Spring Boot 的配置类,@Configuration 配置类上来标注这个注解。
@EnableAutoConfiguration:注解 Spring Boot 开启自动配置功能,有了自动配置类,就免去了我们手动编写配置注入功能组件等工作。
小结
Spring Boot 在启动的时候从类路径下的 META-INF/spring-factories
获取 EnableAutoConfiguration 指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作,spring-boot-autoconfigure-2.2.1.RELEASE.jar。
1 |
|
@RestController:这个类所有方法返回的数据直接写给浏览器,如果是对象转为 json 数据。
Spring Boot 配置
全局配置文件
可以对一些默认配置值进行修改,配置文件存放在 /src/main/resources
目录或者类路径 /config
下。
- application.properties
- application.yml
Yaml:以数据为中心,比 json、xml 更适合做配置文件
1 | server: |
1 | package com.rao.springboot.demo.domain; |
@Data:Lombok 提供,加了 @Data 注解的类,编译后会自动给我们加上下列方法:
- 所有属性的 get() 和 set()
- toString()
- hashCode()
1 | <dependency> |
@Component:把普通 POJO 实例化到 Spring 容器中,相当于配置文件中的 <bean id="" class=""/>
@ConfigurationProperties(prefix = “person”):默认从全局配置文件获取值,此注解将类属性和配置文件中相关配置进行绑定,一一映射。
1 | package com.rao.springboot.demo.domain; |
application.yml
1 | person: |
@Value 与 @ConfigurationProperties 对比:
- 只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用 @Value
- 专门编写 JavaBean 来和配置文件映射,使用 @ConfigurationProperties
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个个指定 |
松散绑定 | 支持 | 不支持 |
SePL | 不支持 | 支持 |
JSR303 数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
测试类
1 | package com.rao.springboot.demo; |
1 | Person(name=rao, age=29, boss=false, birth=Tue Jan 01 00:00:00 CST 2019, maps={height=173cm, weight=62kg}, lists=[lisi, zhangsan], dog=Dog(name=小狗, age=12, colour=blue)) |
@Autowired:
@PropertySource(value = “classpath:person.properties”):可以加载指定位置的配置文件。
@ImportResource:导入 Spring 的配置文件,让配置文件里面的内容生效。
Spring Boot 推荐给容器中添加组件的方式:使用 @Configuration @Bean 的配置类替代配置文件给容器添加组件,容器中默认组件名就是方法名。
配置文件占位符:${}
Profile
目的:Spring 针对不同环境提供不同配置功能的支持,可以通过激活、指定参数等方式快速切换环境。
多 profile 文件形式:application-{profile}.properties/yml
yml 支持多文档块方式:—
激活指定 profile:配置文件 spring.profiles.active=dev,或者命令行 –spring.profiles.active=dev,或者虚拟机参数指定。
1 | person: |
配置文件加载位置:优先级由高到低,优先级高会覆盖优先级低的配置,全部加载互补配置。
- -file:./config/
- -file:./
- -classpath:/config/
- -classpath:/
Spring Boot 日志
Spring Boot:slf4j + log4j/log4j2/logback
每一个日志的实现都有自己的配置文件,使用 slf4j 之后,配置文件还是做成日志实现框架自己本身的配置文件。
Spring Boot 能自动适配所有的日志,而且底层使用 slf4j + logback 的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉。
Spring Boot 与 Web 开发
模板引擎 thymeleaf