SpringBoot HelloWorld#
一个功能:
浏览器发送一个hello请求,浏览器接受请求并处理,响应hello字符串
1. 创建一个maven工程(jar)#
2. 导入SpringBoot相关依赖#
maven选择自动导入
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.8.RELEASE</version>
</dependency>
</dependencies>
|
(1) 父项目#
1
2
3
4
5
|
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
</parent>
|
它的父项目是
1
2
3
4
5
6
7
|
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.8.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
来真正管理Spring Boot里的所有依赖
|
SpringBoot的版本仲裁中心;
导入依赖默认不需要写版本(没有在dependencies中进行管理的自然需要声明版本号)
(2) 导入的依赖#
1
2
3
4
5
|
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.8.RELEASE</version>
</dependency>
|
Spring-boot-starter-web
3. 编写主程序#
1
|
@SpringBootApplication // 来标注一个主程序类,说明这是一个Spring Boot类
|
@SpringBootApplication
:SpringBoot标注在某个类上,说明这个类是SpringBoot的主配置类。SpringBoot就应该运行这个类的main 方法来启动SpringBoot类。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication
|
-
@SpringBootConfiguration
:SpringBoot的配置类
标注在某个类上,表示这是一个Spring Boot配置类
-
@Configuration
:配置类上标注这个注解
配置类==配置文件;配置类也是容器中的一个组件;@Component
-
@EnableAutoConfiguration
:开启自动配置功能
以前我们需要配置的东西,SpringBoot自动帮我们配置
1
2
3
|
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration
|
-
@AutoConfigurationPackage
:自动配置包
@Import({Registrar.class})
Spring的底层注解,@Import给容器中导入一个组件;导入的组件由Registrar.class
将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件都扫描到Spring容器中。
-
@Import({AutoConfigurationImportSelector.class})
给容器中导入组件,
AutoConfigurationImportSelector.class
:导入哪些组件的选择器
将所有需要导入的组件以全类名的方式返回;
这些组件就会被添加到容器中;
会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件,并配置好这些组件
有了自动配置类,就免去了手动编写配置注入功能组件的工作
Spring Boot在启动时从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration
指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作
J2EE的整体解决方案和自动配置都在spring-boot-autoconfiguration
中
4. 编写相关的Controller, Service#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package com.haven.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @author HavenTong
* @date 2019-09-09 00:56
*/
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
private String hello(){
return ("Hello World");
}
}
|
5. 运行主程序测试#
6. 简化部署#
https://docs.spring.io/spring-boot/docs/2.1.8.RELEASE/reference/html/getting-started-first-application.html#getting-started-first-application-executable-jar
11.5
导入Spring Boot的maven插件
1
2
3
4
5
6
7
8
9
|
<!-- 可以将应用打包成一个可执行的jar包 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
|
侧边栏—>Maven—>项目—>LifeCycle—>package
进行执行
7. 使用SpringBoot Initializer创建的项目#
-
resources
-
static: 保存的所有静态资源 js, css, 图片
-
templates: 保存所有的模版页面。(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持jsp的页面);
可以使用模版引擎(freemarker, thymeleaf);
-
**application.properties: **Spring Boot应用的配置文件