1.SpringBoot介绍
1.1 SpringBoot简介
SpringBoot是一个快速开发的框架,能够快速的整合第三方框架,简化XML配置,全部采用注解形式,内置Tomcat容器,帮助开发者能够实现快速开发,SpringBoot的Web组件 默认集成的是SpringMVC框架。
Spring Boot的主要优点:
a.为所有Spring开发者更快的入门
b.开箱即用,提供各种默认配置来简化项目配置
c.内嵌式容器简化Web项目
d.没有冗余代码生成和XML配置的要求
1.2 使用SpringBoot系统要求
系统要求:
Java1.8及以上
Spring Framework 4.1.5及以上
1.3 SpringBoot和SpringMVC区别
SpringBoot 是一个快速开发的框架,能够快速的整合第三方框架,简化XML配置,全部采用注解形式,内置Tomcat容器,帮助开发者能够实现快速开发,SpringBoot的Web组件 默认集成的是SpringMVC框架。
SpringMVC是控制层。
1.4 SpringBoot和SpringCloud区别
SpringBoot 是一个快速开发的框架,能够快速的整合第三方框架,简化XML配置,全部采用注解形式,内置Tomcat容器,帮助开发者能够实现快速开发,SpringBoot的Web组件 默认集成的是SpringMVC框架。
SpringCloud依赖与SpringBoot组件,使用SpringMVC编写Http协议接口,同时SpringCloud是一套完整的微服务解决框架。
常见误区:
1.SpringBoot并不是一个微服务框架,它只是一个用于快速开发的框架。SpringCloud才是真正的微服务框架。
2.使用SpringBoot的基础上,想做微服务开发并不是只能用SpringCloud与它进行整合,还可以使用Duboo与SpringBoot进行整合进行微服务开发,只不过使用SpringCloud更为轻量。
2.SpringBoot快速入门
2.1 创建一个Maven工程
2.2 pom文件引入依赖
<!-- Maven parent 目的,聚合工程、继承关系 -->
<!--Spring parent 目的: 统一整合第三方框架依赖信息 (SpringBoot 支持依赖 不需要写版本号) -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
</parent>
<dependencies>
<!-- -springboot 整合Web组件 整合SpringMVC 就会把传统方式的SpringMVC依赖的jar全部给下载来 -->
<!-- 引入spring-boot-starter-web 帮你整合好所有相关的依赖jar包 原理 maven依赖传递 -->
<!-- 原理: spring-boot-starter-parent< 中,整合号相关 jar依赖信息 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2.3 编写第一个服务HelloWorld
创建package命名为com.lzh.controller(根据实际情况修改)
创建HelloController类,内容如下
package com.lzh.controller;
//在上加上RestController 表示修饰该Controller所有的方法返回JSON格式,直接可以编写
@RestController
//注解@EnableAutoConfiguration:作用在于让 Spring Boot
// 根据应用所声明的依赖来对 Spring 框架进行自动配置 这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。
// 由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。
@EnableAutoConfiguration
public class HelloController {
@RequestMapping("/hello")
public String index() {
return "Hello World";
}
public static void main(String[] args) {
SpringApplication.run(HelloController.class, args);
}
}
SpringApplication.run(HelloController.class, args) 标识HelloController为启动类
2.4 SpringBoot启动方式1
在2.3的代码上添加@RestController和@EnableAutoConfiguration
@RestController的作用:在上加上RestController 表示修饰该Controller所有的方法返回JSON格式,直接可以编写
@EnableAutoConfiguration的作用:
让 Spring Boot根据应用所声明的依赖来对 Spring 框架进行自动配置 这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。
由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。
启动主程序,打开浏览器访问http://localhost:8080/hello,可以看到页面输出Hello World
2.5 SpringBoot启动方式2
@ComponentScan(basePackages = “com.lzh.controller”)—控制器扫包范围
在 com.lzh.controller下新建一个类App
package com.lzh.controller;
@ComponentScan(basePackages = "com.lzh.controller")
@EnableAutoConfiguration
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
新建一个HelloController
package com.lzh.controller;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String index() {
return "Hello World1";
}
}
启动主程序App,打开浏览器访问http://localhost:8080/hello,可以看到页面输出Hello World
2.6 SpringBoot启动方式3
使用@SpringBootApplication
@SpringBootApplication=@Configuration+@EnableAutoConfiguration+@ComponentScan 注解所修饰,换言之 Springboot 提供了统一的注解来替代以上三个注解
扫包范围:在启动类上加上@SpringBootApplication注解,当前包下或者子包下所有的类都可以扫到。
a.在com.lzh下新建一个类App
package com.lzh;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
/**
* 注意:@SpringBootApplication 扫包范围是在同级包和当前包下
* @param args
*/
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
b.在 com.lzh.controller下新建一个类HelloController1(当前包下)
package com.lzh.controller;
@RestController
public class HelloController1 {
@RequestMapping("/hello1")
public String index() {
return "Hello World1";
}
}
c.在com.lzh下新建一个类HelloController2(子包下)
package com.lzh;
@RestController
public class HelloController2 {
@RequestMapping("/hello2")
public String index() {
return "Hello World2";
}
}
启动App
访问http://localhost:8080/hello1和http://localhost:8080/hello2都是可以成功访问的