springboot教程

从零到一学习 Spring Boot。本教程涉及的知识如下:

    Hell World

    注解的使用

    依赖讲解

    配置文件

    YAML

    配置文件讲解

    Profifile模式

    配置文件优先级外部配置加载顺序

    自动配置原理

    日志处理

    日志框架介绍

    SLF4j的使用

    日志关系

    日志的使用

    Web实战

    创建项目

    静态资源映射规则

    模板引擎

    Thymeleaf使用

    Thymeleaf语法

    Spring MVC自动配置

    扩展 Spring MVC

    错误处理机制

    定制错误页面

    Servlet容器

    三大组件介绍

    修改容器

    Docker

    数据访问

    ...

Spring Boot 教程

一、Hello World

1. 起步

1. 点击此链接点击Quick start,选择对应版本,下载Demo。

2. IDEA导入项目

3. 建立controller包,以及类package com.wrq.boot.controller;

@Controller

public class HelloController {

@ResponseBody

@RequestMapping("/hello")

public String hello(){

return "hello world!";

}

}

4. 在于controller包同级有一个主程序类

package com.wrq.boot;

@SpringBootApplication

public class BootApplication {

public static void main(String[] args) {

//应用启动起来

SpringApplication.run(BootApplication.class, args);

}

}

@SpringBootApplication 来标注一个主程序,说明这是一个Sping Boot项目

5. 运行这个main方法,控制台打印启动成功。


:: Spring Boot :: (v1.5.19.BUILD-SNAPSHOT)2019-01-14 00:35:00.020 INFO 18196 --- [ main]

com.wrq.boot.BootApplication : Starting BootApplication

on DESKTOP-IJ41H0K with PID 18196 (D:\Java\Project\Spring-Boot-

Notes\boot\target\classes started by wangqian in

D:\Java\Project\Spring-Boot-Notes\boot)

2019-01-14 00:35:00.026 INFO 18196 --- [ main]

com.wrq.boot.BootApplication : No active profile set,

falling back to default profiles: default

2019-01-14 00:35:00.203 INFO 18196 --- [ main]

ationConfigEmbeddedWebApplicationContext : Refreshing

org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWeb

ApplicationContext@e50a6f6: startup date [Mon Jan 14 00:35:00 CST

2019]; root of context hierarchy

2019-01-14 00:35:04.984 INFO 18196 --- [ main]

s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with

port(s): 8081 (http)

2019-01-14 00:35:05.048 INFO 18196 --- [ main]

o.apache.catalina.core.StandardService : Starting service [Tomcat]

2019-01-14 00:35:05.048 INFO 18196 --- [ main]

org.apache.catalina.core.StandardEngine : Starting Servlet Engine:

Apache Tomcat/8.5.37

2019-01-14 00:35:05.396 INFO 18196 --- [ost-startStop-1] o.a.c.c.C.

[Tomcat].[localhost].[/] : Initializing Spring embedded

WebApplicationContext

2019-01-14 00:35:05.396 INFO 18196 --- [ost-startStop-1]

o.s.web.context.ContextLoader : Root

WebApplicationContext: initialization completed in 5205 ms

2019-01-14 00:35:05.880 INFO 18196 --- [ost-startStop-1]

o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet:

'dispatcherServlet' to [/]

2019-01-14 00:35:05.890 INFO 18196 --- [ost-startStop-1]

o.s.b.w.servlet.FilterRegistrationBean : Mapping filter:

'characterEncodingFilter' to: [/*]

2019-01-14 00:35:05.891 INFO 18196 --- [ost-startStop-1]

o.s.b.w.servlet.FilterRegistrationBean : Mapping filter:

'hiddenHttpMethodFilter' to: [/*]

2019-01-14 00:35:05.891 INFO 18196 --- [ost-startStop-1]

o.s.b.w.servlet.FilterRegistrationBean : Mapping filter:

'httpPutFormContentFilter' to: [/*]2019-01-14 00:35:05.892 INFO 18196 --- [ost-startStop-1]

o.s.b.w.servlet.FilterRegistrationBean : Mapping filter:

'requestContextFilter' to: [/*]

2019-01-14 00:35:06.666 INFO 18196 --- [ main]

s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for

@ControllerAdvice:

org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWeb

ApplicationContext@e50a6f6: startup date [Mon Jan 14 00:35:00 CST

2019]; root of context hierarchy

2019-01-14 00:35:06.854 INFO 18196 --- [ main]

s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/hello]}" onto

public java.lang.String

com.wrq.boot.controller.HelloController.hello()

2019-01-14 00:35:06.863 INFO 18196 --- [ main]

s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto

public

org.springframework.http.ResponseEntity<java.util.Map<java.lang.Strin

g, java.lang.Object>>

org.springframework.boot.autoconfigure.web.BasicErrorController.error

(javax.servlet.http.HttpServletRequest)

2019-01-14 00:35:06.865 INFO 18196 --- [ main]

s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "

{[/error],produces=[text/html]}" onto public

org.springframework.web.servlet.ModelAndView

org.springframework.boot.autoconfigure.web.BasicErrorController.error

Html(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpSer

vletResponse)

2019-01-14 00:35:06.946 INFO 18196 --- [ main]

o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path

[/webjars/**] onto handler of type [class

org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

2019-01-14 00:35:06.946 INFO 18196 --- [ main]

o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto

handler of type [class

org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

2019-01-14 00:35:07.009 INFO 18196 --- [ main]

o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path

[/**/favicon.ico] onto handler of type [class

org.springframework.web.servlet.resource.ResourceHttpRequestHandler]2019-01-14 00:35:07.278 INFO 18196 --- [ main]

o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX

exposure on startup

2019-01-14 00:35:07.347 INFO 18196 --- [ main]

s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s):

8080(http)

2019-01-14 00:35:07.357 INFO 18196 --- [ main]

com.wrq.boot.BootApplication : Started BootApplication in

8.343 seconds (JVM running for 9.312)

启动成功:访问 http://localhost:8081/hello 即可打印 hello world!

上方日志显示服务器端口等信息,默认是8080,可以在application.properties配置文件

中修改默认端口号:

#修改端口

server.port=8081

可以修改HelloController:

@RestController

public class HelloController {

@RequestMapping("/hello")

public String hello(){

return "hello world!";

}

}

上方Controller等于下方的:2. 注解区别?

@Controller和@RestController的区别

@RestController注解相当于@ResponseBody + @Controller合在一起的作用。

1. 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页

面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回

的内容就是Return 里的内容。

2. 如果需要返回到指定页面,则需要用 @Controller配合视图解析器

InternalResourceViewResolver才行。 如果需要返回JSON,XML或自定义

mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

例如:

1.使用@Controller 注解

在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面

若返回json等内容到页面,则需要加@ResponseBody注解

2.@RestController注解

相当于@Controller+@ResponseBody两个注解的结合。

返回json数据不需要在方法前面加@ResponseBody注解了

使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析

jsp,html页面

3. 依赖讲解

1. 父项目(版本仲裁)

@ResponseBody

@Controller

public class HelloController {

@RequestMapping("/hello")

public String hello(){

return "hello world!";

}

}<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.5.19.BUILD-SNAPSHOT</version>

<relativePath/> <!-- lookup parent from repository -->

</parent>

你可以 spring-boot-starter-parent 点进去,就会发现它还有父项目。

它可以看成一个版本的仲裁中心,我们所配置的依赖不需要说明版本,因为仲裁中心

已经说明了

如果中心没有声明的,必须说明版本

2. 基础依赖

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter</artifactId>

</dependency>

spring-boot-starter:spring boot场景启动器

Spring把每个场景都抽取出来,做成了一个个starts

如我们需要那个场景只需要把对应的启动器来导入进来就可以,不用担心版本。

用什么功能(Web、缓存、kafka等等)导入相关启动器即可

3. 、Web模块相关依赖

<!--添加这个依赖,@ResponseBody @RequestMapping-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

4. 配置文件处理器

<!--绑定配置文件处理器,配置文件进行绑定的时候就会有提示-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-configuration-processor</artifactId>

<optional>true</optional>

</dependency>

5. 打包插件

<!-- 将应用打包成一个可执行Jar包,直接使用java -jar xxxx的命令来执行 -->

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容