Spring是为了解决企业级应用开发的复杂性而创建的框架
Spring的关键策略:
1、基于POJO的轻量级和最小侵入性编程
2、通过IOC,依赖注入和面向接口实现松耦合
3、基于切面和惯例进行声明式编程
4、通过切面和模板减少样式代码
Spring Boot基于Spring开发,Spring Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序
简化开发,约定大于配置
主要优点:
- 让Spring开发者更快的入门
- 开箱即用
- 内嵌式容器
- 没有冗余代码生成和XML配置的要求
- ……
# 更改项目端口号
server.port=8081
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "Hello World!";
}
}
启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Spring Boot的启动场景,比如spring-boot-starter-web
Spring Boot会将所有的功能场景,都变成一个启动器
主程序
package com.example.hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
@SpringBootApplication:标注这个类是一个SpringBoot应用
@SpringBootConfiguration // SpringBoot的配置
@EnableAutoConfiguration // 自动配置
SpringBoot所有自动配置都是在启动的时候扫描并加载spring.factories,所有的自动配置类都在这里面,但是不一定生效,要判断条件是否成立,只要导入了对应的start,就有对应的启动器了
有了启动器,自动装配就会生效,然后就配置成功了
SpringApplication这个类主要做了以下四件事情:
1、推断应用的类型是普通的项目还是Web项目
2、查找并加载所有可用初始化器,设置到initializers属性中
3、找出所有的应用程序监听器,设置到listeners属性中
4、推断并设置main方法的定义类,找到运行的主类