喜欢有帮助记得点赞哦,加关注不迷路
一、SpringBoot介绍
1.1 简介
我们第一次学习Spring框架时是否觉得器复杂的配置而退却,在第n次使用Spring框架时是否觉得反复的复制粘贴配置文件觉得厌烦?那么我们不妨试试SpringBoot来让我们更加快速容易上手,更方便快捷的构建Spring应用。
Spring Boot让我们的Spring应用变的更轻量化。比如:你可以仅仅依靠一个Java类来运行一个Spring应用。你也可以打包你的应用为jar并通过使用java -jar来运行你的Spring Web应用。
1.2 好处
为所有Spring开发者更快的入门
提供各种默认配置来简化项目配置
内嵌式容器简化Web项目
没有冗余代码生成和XML配置的要求
1.3 系统要求
Java 7及以上
Spring Framework 4.1.5及以上
本文采用Java 1.8.0_181、Spring Boot 2.1.0
二、SpringBoot入门案例
2.1 创建Maven工程
创建一个普通的jar工程项目即可
2.2 引入pom依赖
<!-- 继承SpringBoot默认设置 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
</parent>
<!-- SpringBoot的web组件 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- 作为可执行的jar包 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
备注:
spring-boot-starter-parent作用
在pom.xml中引入spring-boot-start-parent,spring官方的解释叫什么stater poms,它可以提供dependency management,也就是说依赖管理,会引入一些默认的配置并且引入以后再声明其它dependency的时候就不需要version了
spring-boot-starter-web作用
springweb 核心组件
spring-boot-maven-plugin作用
如果我们要直接Main启动spring,那么以下plugin必须要添加,否则是无法启动的。如果使用maven 的spring-boot:run的话是不需要此配置的。(我在测试的时候,如果不配置下面的plugin也是直接在Main中运行的。)
2.3 编写HelloWorld服务
@RestController
@EnableAutoConfiguration
public class SpringbootController {
@RequestMapping("/hello")
public String index() {
return "hello-world";
}
//运行
public static void main(String[] args) {
SpringApplication.run(SpringbootController.class, args);
}
}
备注:
1)@RestController
在类上使用RestController注解表示修饰该Controller中的所有方法返回JSON格式,无需在方法上使用@ResponseBody注解。
2)@EnableAutoConfiguration
让SpringBoot根据应用所声明的依赖对Spring框架进行自动配置,这个注解告诉SpringBoot根据添加的jar依赖猜测你想如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置
3)SpringApplication.run(SpringbootController.class, args);
将SpringbootController类标记为启动类
2.4 启动
2.4.1 启动方式1
直接运行类中的main方法,控制台打印如下
图有点丑,希望各位不要介意,我们从图中可以看出启动后有个小图标,下边是springboot的版本,还有一条很重要的信息是默认使用内置的tomcat启动的程序,端口号为8080
所以我们可以在地址中输入:localhost:8080/hello访问我们的控制器,还在页面上看到hello-world字样。
2.4.2 启动方式2
新建类,启动程序
//开启包扫描,启动该例子不用配置也行
@ComponentScan(basePackages="com.stt")
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
三、SpringBoot的Web开发
3.1 访问静态资源
我们在开发web项目时,需要引入大量的js,css,图片等静态资源,SpringBoot默认将静态资源存放在classpath下,目录名须符合如下规则:
/static
/public
/resources
/META-INF/resources
例子:我们在项目的src/main/resources下创建static文件夹放一张图片,在地址栏中输入http://localhost:8080/图片名,如果在浏览器上显示图片则代表配置成功。
3.2 全局捕获异常
我们在写项目的过程中,遇到各种各样的异常都是很常见的,但是作为开发人员,是肯定不能将程序的异常暴露给用户的,我们需要对其进行友好提示,那么在springboot中,我们可以使用注解,在一个类中,把一些运行异常都写出来,这样方便项目在运行时更快速的捕捉到异常并给出提示。
我们新建一个Controller
@RestController
public class ExceptionController {
@RequestMapping("/testException")
public String testException() {
int i = 10/0;
return "exception";
}
}
当我们通过浏览器输入http://localhost:8080/testException访问该方法时一定会出现错误
那么我们可以去新建一个类,专门用来捕获异常,这样在项目运行时,就可以拦截所有异常,具体实现请往下边看
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public Map<String, Object> exceptionHandle(){
Map<String,Object> map = new HashMap<String, Object>();
map.put("code", "500");
map.put("msg", "系统出错了,请稍后再试");
return map;
}
}
备注:
1)@ControllerAdvice
我们在类前加了一个@ControllerAdvice的注解,这个注解是controller的一个辅助类,最常用的就是作为全局异常处理的切面类
2)@ExceptionHandler
声明拦截的异常类型,也可以自定义类
通过上边的配置我们再次访问页面结果就不一样了
这里我们介绍了SpringBoot是什么和简单的使用以及访问静态资源和全局异常捕获。希望可以帮到大家