spring遇到的问题汇总

有关日志的打印和日志如何使用

在实际项目中,我们的程序都是运行在linux上,有错误时也不能在本地的控制台上直观看到,所有合理打印日志对于程序员迅速定位到错误。

打印日志时的步骤

  1. application.yml配置文件中配置日志级别和日志文件的路径
logging:
level:
learning: debug
file: log/app-user.log
  1. 在controller中定义log对象
private static final Logger log = LoggerFactory.getLogger(VehicelController.class);
  1. 打印日志

在关键的节点使用info打印

log.info("程序开始")
log.info("程序结束")

在处理异常处使用error打印

        try {
.....
.....
} catch (Exception e) {
e.printStackTrace();
log.error("异常{}", e);
;
}

日志中name和path的关系

logging.file.path 和 logging.file.name 两个同时存在的时候 logging.file.name的优先级更高,所以logging.file.path不会生效;
logging.file.path 默认的日志文件为指定路径下的spring.log,logging.file.name则可以自己指定路径和文件名;

有关静态值的注入

使用@Value 注解static类型的时候,会返回null值。需要注解在非静态方法、变量上。

文章链接:SpringBoot使用@Value给静态变量注入值 - CSDN

SpringBoot中使用@Value()只能给普通变量注入值,不能直接给静态变量赋值。

给普通变量赋值时,直接在变量声明之上添加@Value()注解即可

当要给静态变量注入值的时候,若是在静态变量声明之上直接添加@Value()注解是无效的

虽然没有编译和运行上的报错,经调试可知这种注解方式mailUsername、mailPassword、mailHost的值都是null,也就是说直接给静态变量读取配置文件是无效的

若要给静态变量赋值,可以使用set()方法,其中需要在类上加入@Component注解,方法名(例如setMailUsername)和参数名(例如username)可以任意命名

正确写法:

@Component
public class MyConfig { private static String env; public static String getEnv() {
return env;
} @Value("${env}")
public void setEnv(String env) {
MyConfig.env = env;
}
}

注意一定是在非静态方法setEnv前使用@Value注解。也就是说要把set方法前面的static去掉。

这里是个坑。要注意

关于return写在finally块里的情况

链接:异常处理中在finally里面写return会怎么样 - CSDN

关于nohup运行程序

链接:Nohup后台运行程序 - 博客园

示例:

nohup java -Xms4096m -Xmx8192m -XX:PermSize=1024m -XX:MaxPermSize=2048m -XX:MaxNewSize=1024m -jar /opt/fileStore/jar/file-store-0.0.1-SNAPSHOT.jar >> /opt/fileStore/jar/logs/log.txt 2>&1 &

解释:

  1. nohup表示后台运行,需要在末尾加&

  2. 中间的是jvm参数

  3. >>/opt/fileStore/jar/logs/log.txt 表示标准输出日志到该位置

  4. 2>&1 标准错误输出到同样位置。如果不加会报一句话 nohup: ignoring input and redirecting stderr to stdout ,但是不影响使用。

  5. jvm参数解释

    -Xms1024m 配置初始堆内存1024m;
    -Xmx1024m 配置最大堆内存1024m;
    -XX:PermSize=256m Perm(俗称方法区)占整个堆内存的值;
    -XX:MaxPermSize=512m 方法区占整个堆内存的最大值
    -XX:MaxNewSize=512m 新生代内存上限值

如何使用log4j

链接:log4j使用说明 - CSDN

spring boot项目问题汇总的更多相关文章

  1. spring boot项目发布tomcat容器(包含发布到tomcat6的方法)

    spring boot因为内嵌tomcat容器,所以可以通过打包为jar包的方法将项目发布,但是如何将spring boot项目打包成可发布到tomcat中的war包项目呢? 1. 既然需要打包成wa ...

  2. Spring Boot项目的打包和部署

    补充一点:搜索了下别人Spring Boot部署方案,大多都说:①packaging设为war:②要添加Spring Boot的tomcat依赖:③修改output路径,但是使用STS新建Spring ...

  3. 新建一个新的spring boot项目

    简单几步,在Eclipse中创建一个新的spring Boot项目: 1.Eclipse中安装STS插件: Help -> Eclipse Marketplace... Search或选择&qu ...

  4. 用Gradle构建Spring Boot项目

    相比起Maven的XML配置方式,Gradle提供了一套简明的DSL用于构建Java项目,使我们就像编写程序一样编写项目构建脚本.本文将从无到有创建一个用Gradle构建的Spring Boot项目, ...

  5. Spring boot 1: 使用IDEA创建Spring boot项目

    项目用到的环境: Windows 10 JDK8 IntelliJ IDEA 2017.1.3 Apache Tomcat 8 Maven 3.3.3 使用IDEA新建spring boot项目 新建 ...

  6. [读书笔记] 一、Spring boot项目搭建与配置文件

    读书笔记:[JavaEE开发的颠覆者 Spring Boot实战] 作者:汪云飞 从今天开始坚持读书,并记录下此读书笔记. 一,初接触 Spring boot 项目Hello world搭建 1.po ...

  7. spring boot系列01--快速构建spring boot项目

    最近的项目用spring boot 框架 借此学习了一下 这里做一下总结记录 非常便利的一个框架 它的优缺点我就不在这背书了 想了解的可以自行度娘谷歌 说一下要写什么吧 其实还真不是很清楚,只是想记录 ...

  8. spring boot项目如何测试,如何部署

    有很多网友会时不时的问我,spring boot项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下spring boot 如何开发.调试.打包到最后的投产上线. 开发阶段 单元 ...

  9. 笔记:Spring Boot 项目构建与解析

    构建 Maven 项目 通过官方的 Spring Initializr 工具来产生基础项目,访问 http://start.spring.io/ ,如下图所示,该页面提供了以Maven构建Spring ...

随机推荐

  1. pandas的学习4-处理丢失数据

    import pandas as pd import numpy as np ''' 有时候我们导入或处理数据, 会产生一些空的或者是 NaN 数据,如何删除或者是填补这些 NaN 数据就是我们今天所 ...

  2. 【故障公告】redis内存耗尽造成博客后台无法保存

    非常抱歉,今天上午11:00~11:30左右,由于 redis 服务器内存耗尽造成博客后台故障--保存博文时总是提示"请求太过频繁,请稍后再试",由此给您带来麻烦,请您谅解. 由于 ...

  3. 【进程/作业管理】篇章四:Linux任务计划、周期性任务执行

    命令归纳: at 未来时间点让特定任务运行一次 batch 未来时间点让系统自行选择在系统资源较空闲的时间去执行指定的任务 corn 周期性任务计划(corntad) at命令详解 <--- 假 ...

  4. ucore操作系统学习(七) ucore lab7同步互斥

    1. ucore lab7介绍 ucore在前面的实验中实现了进程/线程机制,并在lab6中实现了抢占式的线程调度机制.基于中断的抢占式线程调度机制使得线程在执行的过程中随时可能被操作系统打断,被阻塞 ...

  5. day113:MoFang:种植园商城页面&充值集成Alipay完成支付的准备工作

    目录 1.种植园商城页面初始化 2.规划商品种类并且构建关于商品的模型类 3.解决APP打包编译之后的跨域限制 4.商品列表后端接口实现 5.前端获取商品列表并显示 6.种植园点击充值允许用户选择充值 ...

  6. Git 仓库拆分

    方案对比 subtree 使用命令 git subtree split -P dirPath -b branchName 将目标文件夹的代码都保存到指定分支.试了下,该方案虽然保留了 commit,但 ...

  7. Mysql Workbench查询成功但是不显示

    先来看看MysqlWorkbench的一个bug: 当执行SQL语句成后显示结果在屏幕下方,但是当你拖动结果拦边框往下移动到与Action Output时两者就会合并,再也拖不上来!!!! 回归正题: ...

  8. maven项目添加jar包

    使用集成工具创建一个maven项目,如果需要添加开发包,只需去maven仓库找到对应的包,将配置信息加入pom.xml文件即可.这样,我们就再也不用到处寻找和下载jar包了. 用例:开发工具 STS ...

  9. JQuery特点:

    轻量级 强大的选择器 出色的DOM封装 可靠的事件处理机制 完善的Ajax 出色的浏览器兼容性 丰富的插件支持 完善的文档 支持链式操作

  10. 强化学习 1 --- 马尔科夫决策过程详解(MDP)

    强化学习 --- 马尔科夫决策过程(MDP) 1.强化学习介绍 ​ 强化学习任务通常使用马尔可夫决策过程(Markov Decision Process,简称MDP)来描述,具体而言:机器处在一个环境 ...