SpringBoot的使用


 

SpringBoot简介

springboot用于快速搭建spring项目

  • 使用起步依赖,十分方便
  • 提供了大量默认配置,开箱即用
  • 可搭建分布式项目

 

项目搭建

一般都是web项目,创建时勾选Spring Web。

默认使用最新稳定版的springboot,可以选择版本,如果没有符合的版本,创建项目后到pom.xml改。
在这里插入图片描述
 
常见配置

#开启调试模式,控制台会打印更多的信息,默认false
debug=true  

# 项目名称
spring.application.name=xm-mall

# 使用的端口,缺省时默认为8080
server.port=8000

不管配不配置项目名,访问路径都是 host:port/ ,不是 host:port/appName

 

热部署

1、Settings中勾选
在这里插入图片描述
 
2、创建项目时勾选
在这里插入图片描述
也可以自己添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>

初次设置后,以后每次新建项目时,只需弄这一步。
 

3、Ctrl+Shift+Alt+/ ,勾选项目运行时自动编译
在这里插入图片描述
使用热部署,修改代码后不需要重新运行应用,但热部署有点占资源,配置低的电脑斟酌使用。

 

静态资源路径

springboot默认的静态资源目录

  • classpath:/static
  • classpath:/public
  • classpath:/resources
  • classpath:/META-INF/resources

一般使用/resources,在/resources/static下新建文件夹css、js、image来存放相关资源。

 

配置多种运行环境

1、在resources下新建3个配置文件,分别写开发、测试、生产环境的配置

  • application-dev.properties  #开发
  • application-test.properties  #测试
  • application-prod.properties  #生产
     

2、在自带的application.properties中指定要使用的配置

# 值是-后面的部分,dev、test、prod
spring.profiles.active=dev  

application.properties是公共的,开发、测试、生产环境都会加载使用,可以把公共配置写在application.properties中。

 
执行jar包时也可以指定要使用的配置

java -jar xxx.jar --spring.profiles.active=dev

 

设置全局异常处理

全局异常处理用于统一处理没被捕获、处理的异常,在异常被抛到JVM之前捕获、处理。异常可以是jdk预定义的异常,也可以是自定义的异常。

使用全局异常处理的好处:代码中不必写大量的try…catch,可以直接在方法签名中throws抛出,由全局异常处理。
 

新建包exception,包下新建类GlobalExceptionHandler

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class) //指定要捕获、处理哪种异常,Exception.class即处理所有种类的异常
    @ResponseBody  //可以以json形式返回给浏览器直接显示出来,也可以专门写一个error页面,调用该页面显示错误信息
    public Map<String,String> handler(Exception e){ //如果要使用异常对象,可以写成参数,会自动传入
        Map<String, String> map = new HashMap<>(2);
        map.put("tip", "系统发生错误!请联系管理员xxxxxx@xxx.com");
        map.put("errorInfo", e.getMessage());
        return map;
    }

}

上面的处理方式太笼统,常见的做法是在exception包下写一些自定义的异常类,在项目中可以自己抛出异常

throw new XxxException();

针对不同类型的异常写专门的处理

@ControllerAdvice
public class GlobalExceptionHandler {

    // 捕获、处理AxxException
    @ExceptionHandler(AxxException.class)
    @ResponseBody
    public Map<String,String> handler(AxxException e){
        Map<String, String> map = new HashMap<>(3);
        map.put("tip", "系统发生错误!请联系管理员xxxxxx@xxx.com");
        map.put("errorCode", "01");
        map.put("errorInfo", e.getMessage());
        return map;
    }

    // 捕获、处理BxxException
    @ExceptionHandler(BxxException.class)
    @ResponseBody
    public Map<String,String> handler(BxxException e){
        Map<String, String> map = new HashMap<>(3);
        map.put("tip", "系统发生错误!请联系管理员xxxxxx@xxx.com");
        map.put("errorCode", "02");
        map.put("errorInfo", e.getMessage());
        return map;
    }

    //.....

}

 

设置日志logback+slf4j

日志的作用

  • 便于分析程序执行过程
  • 方便调试
  • 可以将业务数据存储到文件、数据库,便于后期分析

常见的日志组件:log4j、logback、slf4j、commons-logging。

日志框架的选择对性能有一定影响,尤其是需要大量使用日志的项目。springboot2.x默认使用logback,logback是在log4j的基础上改进而来的,单独使用logback只能记录日志,还需使用其它日志框架在项目中log自定义的信息,推荐搭配slf4j。
 

logback的日志级别:DEBUG < INFO(默认) < WARN < ERROR

默认格式:日期时间   日志级别   pid   线程名(main是主线程)  哪个类输出的日志(包名.类名)  信息

2020-05-24 16:51:38.323  INFO 25168 --- [           main] com.chy.visit.VisitApplication           : No active profile set, falling back to default profiles: default

pid即进程号,唯一标识一个进程,比如上面运行的项目的pid是25168
 

logback常用配置

#日志文件的保存路径
logging.file.path=classpath:/
#logging.file.path=/var/mall/log

#文件名
logging.file.name=mall.text
#logging.file.name=mall.log

#日志级别,默认info,设置为debug也可以通过debug=true来设置,上线设置为warn
#logging.level.root=info

#单个文件的最大尺寸,默认10M
#logging.file.max-size=10MB
#日志最多保留几天,默认7
#logging.file.max-history=7

如果日志配置很详细、配置项很多,可以在resources下新建 logback-spring.xml 来单独写。
 

在项目中使用slf4j输出日志,有2种方式

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Xxx {
	// 方式一  通过LoggerFactory获取Logger对象
    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    public void xxx(){
        //....
        logger.debug("debug msg");
        logger.info("info msg");
        logger.warn("warn msg");
        logger.error("error msg");
        //.....
    }

}
import lombok.extern.slf4j.Slf4j;

@Slf4j   //方式二 通过lombok的 @Slf4j 注解自动创建Logger对象,对象名是log
public class Xxx {

    public void xxx(){
        //....
        log.debug("debug msg");
        log.info("info msg");
        log.warn("warn msg");
        log.error("error msg");
        //.....
    }

}

 

yml文件的使用

SpringBoot默认会加载resources下的配置文件

  • application*.yml
  • application*.yaml
  • application*.properties

yml、yaml是同一种文件,后缀写成yml、yaml都可以。
 

yml语法

# key后面加1个空格,key、value都不引

# 普通字段
name: chy

# 对象
user:
  name: chy
  age: 20

# 对象嵌套对象
student:
  name: chy
  age: 20
  teacher:
    name: xxx
    age: 40


# 数组
city: [beijing,shanghai,guangzhou,shenzhen]

# 数组嵌套对象
studentArr: [{name: zhangsan,age: 20},{name: lisi,age: 20}]

 

自定义配置项(在项目中使用配置文件中的值)

eg. 在springboot的配置文件中指定上传文件的保存位置

从配置文件中取值有2种方式(properties、yml都适用)
 
1、使用@Value("${xxx}")注入基本类型、String,注意${ }要引起来

@Component
public class Config {
    @Value("${id}")  //注入普通字段
    private static int id;

    @Value("${upload.save-location}")  //注入对象的属性值
    private static String saveLocation;  //$Value()注入对象的属性值有个好处:key不必相同

    @Value("${city[0]}")  //注入数组元素
    private static String city;

	//.....
	
}

@Value()只能注入基本数据类型、String类型的值,不能注入引用类型,比如整个数组、对象(但可以一项一项地注入)
 

2、使用@ConfigurationProperties(prefix = “xxx”)注入对象

@Setter  //需要提供setter方法注入
@Getter
@ConfigurationProperties(prefix = "upload")  //指定配置项前缀
@Component
public class UploadConfig {
    private static int maxFileSize;  //会自动注入同名的属性值
    private static String savaLocation;
    //.....
}

 

说明

1、 @Value只能标注在成员变量及其setter方法上,@ConfigurationProperties只能标注在类上。lombok的@Getter、@Setter只会生成实例成员的方法,不能生成静态成员的方法;@Value也只能注入到类的实例成员上,不能注入到静态成员上。
 

2、可以注入到配置类,然后在其它类中引用配置类,需要用@Component把配置类放到spring容器中;也可以不使用配置类,直接注入到要使用地方,比如直接把upload.saveLocation注入到处理上传文件的类的成员变量中。
 

3、如果要使用@ConfigurationProperties,在创建项目时可以勾选
在这里插入图片描述
也可以手动添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

先使用@ConfigurationProperties,这样在yml中写配置时会提示对应的字段。

 

运行项目的多个实例

勾选Allow parallel run
在这里插入图片描述
修改项目使用的端口号有2种方式

  • 在VM options中指定,示例: -Dserver.port=9000
  • 在Program arguments中指定,示例:–server.port=9000,注意此处是2根短横

这2种方式均会覆盖配置文件中指定的端口号。

 

项目打包

springboot项目可以打包为war、jar,创建项目时可选
在这里插入图片描述
因为有引导类(主类),打包为jar也可以运行,默认打包为jar。

mvn clean package  #先清理再打包

java -jar xxx.jar  #运行jar包
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读