SpringBoot的使用

   日期:2020-05-24     浏览:124    评论:0    
核心提示:目录SpringBoot简介项目搭建热部署静态资源路径配置多种运行环境定时任务设置全局异常处理yml文件的使用项目打包 SpringBoot简介springboot用于快速搭建spring项目使用起步依赖,十分方便提供了大量默认配置,开箱即用可搭建分布式项目 项目搭建一般都是web项目,创建时勾选Spring Web常见配置#开启调试模式,控制台会打印更多的信息,默认falsedebug=true # 项目名称spring.application.najava

目录

      • SpringBoot简介
      • 项目搭建
      • 热部署
      • 静态资源路径
      • 配置多种运行环境
      • 设置全局异常处理
      • 设置日志logback+slf4j
      • yml文件的使用
      • 自定义配置项(在项目中使用配置文件中的值)
      • 项目打包

 

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之前捕获、处理。异常可以是java预定义的异常,也可以是自定义的异常。
 
新建包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中写配置时会提示对应的字段。

 

项目打包

springboot项目可以打包为war、jar,创建项目时可选

因为有引导类(主类),打包为jar也可以运行,默认打包为jar。

mvn clean package  #先清理再打包

java -jar xxx.jar  #运行jar包
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服