Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式, Spring Boot 致力于在蓬勃发展的快速应用开发领域(rapid application evelopment)成为领导者。 其特点如下:
- 创建独立的 Spring 应用程序
- 嵌入的 Tomcat或者Jetty等Servlet容器
- 提供生产就绪型功能,如指标,健康检查和外部配置
自动配置 Spring,绝对没有代码生成和对 XML 没有要求配置
配置文件
spring-boot的默认配置文件为appliaction.yaml,配置文件直接放在当前工程目录中。spring-boot会自动找到该配置文件并解析。
多环境配置,spring boot允许你通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件,然后通过在application.properyies通过spring.profiles.active来具体激活一个或者多个配置文件,如果未激活则会使用默认的配置。
- 代码配置,通过@profile注解直接将代码转换为配置文件类,在激活不同配置时,会选用不同的类来实现逻辑。
命令行配置,在命令行运行时,连续的两个减号–就是对application.properties中的属性值进行赋值的标识。所以,java -jar xxx.jar —server.port=8888命令,等价于我们在application.properties中添加属性。
注解
Spring Boot为了开发者从复杂的xml文件中解放出来,提供了丰富注解来实现同样的功能。
创建Beans注解
@Componet: 泛指组件类,就是在自身定位不明确的时候使用,标识一个受Spring管理的Bean组件 ,同样可以用@Repository, @Service, @Controller来替代它
- @Service 表明这是业务层的组件
- @Repository: 用来表明该类是用来执行与数据库相关的操作(即dao对象),并支持自动处理数据库操作产生的异常
- @Configuration 表明为配置类,用于xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法等价于spring的xml配置文件中的
,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器 - @Bean 标注在方法上,将该方法返回的对象注册为Bean
-
Beans行为注解
@PostConstruct 在初始化完成之后执行的操作,一般执行顺序为@Constructor > @Autowired > @PostConstruct
- @PreDestory 在Bean销毁之前创建
- @Scope 指定对象在spring中的创建方式
@Lazy 是否惰性加载Bean对象,也就是getBean 方法获取它时,它才会进行 Bean 的初始化,完成依赖注入;默认不使用懒加载。
注入Beans注解
@Autowired 默认byType查找,可跟@Qualifier搭配byName查找
- @Qualifier byName注入Bean对象。在@Configuration注解的类中,还可以注解在方法的参数上,来实现依赖
- @Resource @Resource并不是spring原生包中注解,而是javax.annotation.Resource包中的注解,默认byName查找bean
@Conditinal 根据当前环境或者自定义函数选择注入的Bean
@NonNull 可以标注在方法、字段、参数之上,表示对应的值不可以为空,(标识注解,无作用)
- @Nullable 注解可以标注在方法、字段、参数之上,表示对应的值可以为空(标识注解,无作用)
- @ComponentScan 指定spring从哪些包以及下级包中寻找bean
- @SpringBootConfiguration 是@Configuration注解的派生注解,跟@Configuration注解的功能一致
- @EnableAutoConfiguration
- @Order https://blog.csdn.net/yaomingyang/article/details/86649072, 注入到list中
@Profile 将配置经进行分类
MVC注解
@Controller: 注解的bean会被spring-mvc对外提供http接口
- @ResponseBody:将java对象转为json格式的数据
- @RequestBody :将请求方法写入Java对象,对应swagger中paramType=”body”
- HttpServletRequest 获取完整的http请求
- @ModelAttribute
- @RequestHeader, 对应swagger中paramType=”header”
- @RequestParam, 对应swagger中paramType=”query”
- @PathVariable, 对应swagger中paramType=”path”
Q:
- 如何实现一个springboot-starter
- undertow,基于NIO的高性能Web服务
- 测试:Junit, Hamcrest, Mockito
- spring-boot的策略:开箱即用,约定优于配置
- ApplicationReadyEvent事件
- @dependsOn, @Conditional, 因该是判断是否存在配置
- 不同Bean之间相互引用,各个方法的加载顺序是什么
- @Bean(initMethod = “open”, destroyMethod = “close”)
- Order(1)
参考:
spring-demo:https://github.com/ityouknow/spring-boot-examples
spring注解:https://blog.csdn.net/fansili/article/details/78740877
spring-boot获取配置方式:https://www.jianshu.com/p/748fc4d5bae6
依赖注入的三种方式:https://www.cnblogs.com/chansblogs/p/8343930.html
https://blog.csdn.net/xindoo/article/details/86408810
Spring-boot:https://www.jianshu.com/p/ffe5ebe17c3a
https://qbgbook.gitbooks.io/spring-boot-reference-guide-zh/content/