SpringBoot2核心技术与响应式编程——基础入门

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 包里面。

上一篇:如何编写一个自定义的SpringBoot-starter组件


下一篇:第七章 服务监控之spring-boot-admin