1.HelloWold
1.1、创建Maven工程
1.2、引入依赖
1 ========pom.xml========== 2 3 <parent> 4 <groupId>org.springframework.boot</groupId> 5 <artifactId>spring-boot-starter-parent</artifactId> 6 <version>2.3.4.RELEASE</version> 7 </parent> 8 9 10 <dependencies> 11 <dependency> 12 <groupId>org.springframework.boot</groupId> 13 <artifactId>spring-boot-starter-web</artifactId> 14 </dependency> 15 </dependencies>
1.3、创建主程序
1 /** 2 * 主程序类 3 * @SpringBootApplication告诉SpringBoot这是一个SpringBoot应用 4 */ 5 @SpringBootApplication 6 public class MainApplication { 7 public static void main(String[] args) { 8 SpringApplication.run(MainApplication.class, args); 9 } 10 }
1.4、编写业务
1 @RestController 2 public class HelloController { 3 4 @RequestMapping("/hello") 5 public String handle01() { 6 return "Hello, Spring Boot 2!"; 7 } 8 }
1.5、测试
直接运行main方法
1.6、简化配置
1 =====application.properties===== 2 server.port=8888
1.7、简化部署
1 <build> 2 <plugins> 3 <plugin> 4 <groupId>org.springframework.boot</groupId> 5 <artifactId>spring-boot-maven-plugin</artifactId> 6 </plugin> 7 </plugins> 8 </build>
把项目打成jar包,直接在目标服务器执行即可。
2.依赖管理特性
2.1、父项目做依赖管理
1 <parent> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-parent</artifactId> 4 <version>2.3.4.RELEASE</version> 5 </parent>
它的父项目
7 <parent>
8 <groupId>org.springframework.boot</groupId>
9 <artifactId>spring-boot-dependencies</artifactId>
10 <version>2.3.4.RELEASE</version>
11 </parent>
几乎声明了开发中常用的依赖版本号,自动版本仲裁机制
- 开发导入starter场景启动器
1 见到很多spring-boot-starter-* : *就表示某种场景。 2 只要引入starter,这个场景的所有常规需要的依赖我们都自动引入。 3 SpringBoot所有支持的场景 4 https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter 5 见到的 *-spring-boot-starter: 第三方为我们提供的简化开发的场景启动器。 6 所有场景启动器最底层的依赖。 7 8 <dependency> 9 <groupId>org.springframework.boot</groupId> 10 <artifactId>spring-boot-starter</artifactId> 11 <version>2.3.4.RELEASE</version> 12 <scope>compile</scope> 13 </dependency>
- 无需关注版本号,自动版本仲裁
1 引入依赖默认都可以不写版本。 2 引入非版本仲裁的jar,要写版本号。
- 可以修改版本号
1 查看spring-boot-dependencies里面规定当前依赖的版本用的key 2 在当前项目里面重写配置 3 <properties> 4 <mysql.version>5.1.43</mysql.version> 5 </properties>
3.自动配置
3.1、自动配置Tomcat
- 引入Tomcat依赖
-
配置Tomcat
1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-tomcat</artifactId> 4 <version>2.3.4.RELEASE</version> 5 <scope>compile</scope> 6 </dependency>
3.2、自动配置MVC
- 引入SpringMVC开发的组件
-
自动配好SpringMVC常用功能(组件)
代码清单,查看当前项目中容器里的组件
1 @SpringBootApplication 2 public class MainApplication { 3 public static void main(String[] args) { 4 //1.返回IOC容器 5 ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args); 6 //2.查看容器里的组件 7 String[] beanDefinitionNames = run.getBeanDefinitionNames(); 8 9 for (String beanDefinitionName : beanDefinitionNames) { 10 System.out.println(beanDefinitionName); 11 } 12 } 13 }
组件列表
1 org.springframework.context.annotation.internalConfigurationAnnotationProcessor 2 org.springframework.context.annotation.internalAutowiredAnnotationProcessor 3 org.springframework.context.annotation.internalCommonAnnotationProcessor 4 org.springframework.context.event.internalEventListenerProcessor 5 org.springframework.context.event.internalEventListenerFactory 6 mainApplication 7 org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory 8 helloController 9 org.springframework.boot.autoconfigure.AutoConfigurationPackages 10 org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration 11 propertySourcesPlaceholderConfigurer 12 org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration 13 websocketServletWebServerCustomizer 14 org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration 15 ......
3.3、自动配置Web常见功能,如:字符编码问题
- SpringBoot帮我们配置好了所有web开发的常见场景。
3.4、默认的包结构
- 主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来。
-
无需以前的包扫描配置。
- 可通过@SpringBootApplication(scanBasePackageClasses = "/**/*")改变扫描路径或@ComponentScan指定扫描路径。
1 @SpringBootApplication 2 等价于 3 @SpringBootConfiguration 4 @EnableAutoConfiguration 5 @ComponentScan("/**/*")
3.5、各种配置拥有默认值
- 默认配置最终都是映射到某个类上,如:MultipartProperties。
-
配置文件的值最终会绑定每个类上,这个类会在容器中创建对象。
3.6、按需加载所有配置项
- 引入了哪些场景这个场景的自动配置才会开启。
-
SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure 包里面。