spring boot项目问题汇总
spring遇到的问题汇总
有关日志的打印和日志如何使用
在实际项目中,我们的程序都是运行在linux上,有错误时也不能在本地的控制台上直观看到,所有合理打印日志对于程序员迅速定位到错误。
打印日志时的步骤
- application.yml配置文件中配置日志级别和日志文件的路径
logging:
level:
learning: debug
file: log/app-user.log
- 在controller中定义log对象
private static final Logger log = LoggerFactory.getLogger(VehicelController.class);
- 打印日志
在关键的节点使用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 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 &
解释:
nohup表示后台运行,需要在末尾加&
中间的是jvm参数
>>/opt/fileStore/jar/logs/log.txt 表示标准输出日志到该位置
2>&1 标准错误输出到同样位置。如果不加会报一句话
nohup: ignoring input and redirecting stderr to stdout
,但是不影响使用。jvm参数解释
-Xms1024m 配置初始堆内存1024m;
-Xmx1024m 配置最大堆内存1024m;
-XX:PermSize=256m Perm(俗称方法区)占整个堆内存的值;
-XX:MaxPermSize=512m 方法区占整个堆内存的最大值
-XX:MaxNewSize=512m 新生代内存上限值
如何使用log4j
spring boot项目问题汇总的更多相关文章
- spring boot项目发布tomcat容器(包含发布到tomcat6的方法)
spring boot因为内嵌tomcat容器,所以可以通过打包为jar包的方法将项目发布,但是如何将spring boot项目打包成可发布到tomcat中的war包项目呢? 1. 既然需要打包成wa ...
- Spring Boot项目的打包和部署
补充一点:搜索了下别人Spring Boot部署方案,大多都说:①packaging设为war:②要添加Spring Boot的tomcat依赖:③修改output路径,但是使用STS新建Spring ...
- 新建一个新的spring boot项目
简单几步,在Eclipse中创建一个新的spring Boot项目: 1.Eclipse中安装STS插件: Help -> Eclipse Marketplace... Search或选择&qu ...
- 用Gradle构建Spring Boot项目
相比起Maven的XML配置方式,Gradle提供了一套简明的DSL用于构建Java项目,使我们就像编写程序一样编写项目构建脚本.本文将从无到有创建一个用Gradle构建的Spring Boot项目, ...
- Spring boot 1: 使用IDEA创建Spring boot项目
项目用到的环境: Windows 10 JDK8 IntelliJ IDEA 2017.1.3 Apache Tomcat 8 Maven 3.3.3 使用IDEA新建spring boot项目 新建 ...
- [读书笔记] 一、Spring boot项目搭建与配置文件
读书笔记:[JavaEE开发的颠覆者 Spring Boot实战] 作者:汪云飞 从今天开始坚持读书,并记录下此读书笔记. 一,初接触 Spring boot 项目Hello world搭建 1.po ...
- spring boot系列01--快速构建spring boot项目
最近的项目用spring boot 框架 借此学习了一下 这里做一下总结记录 非常便利的一个框架 它的优缺点我就不在这背书了 想了解的可以自行度娘谷歌 说一下要写什么吧 其实还真不是很清楚,只是想记录 ...
- spring boot项目如何测试,如何部署
有很多网友会时不时的问我,spring boot项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下spring boot 如何开发.调试.打包到最后的投产上线. 开发阶段 单元 ...
- 笔记:Spring Boot 项目构建与解析
构建 Maven 项目 通过官方的 Spring Initializr 工具来产生基础项目,访问 http://start.spring.io/ ,如下图所示,该页面提供了以Maven构建Spring ...
随机推荐
- hadoop_MapReduce_idea上打jar包,在虚拟机上运行
打包前的介绍和准备工作 指定主类可以在运行jar包的时候不用输入要运行哪一个类,直接就可以运行了 指定主类 编辑jar 的信息 修改jar包的名称 build Complete!!! MapReduc ...
- 关于CAS中的ABA问题存在的隐患
一开始觉得ABA问题确实是个问题,但是具体场景是什么呢,虽然过程改了,但是结果一样,取的值也一样 不明所以,不过呢,这里也有一个小的demo可以说明一下 该例子通过AtomicReference判断对 ...
- Eureka系列(三)获取服务Client端具体实现
获取服务Client 端流程 我们先看下面这张图片,这张图片简单描述了下我们Client是如何获取到Server已续约实例信息的流程: 从图片中我们可以知晓大致流程就是Client会自己开启一个 ...
- Java并发包之 CopyOnWriteArrayList
大家在学习Java的过程中,或者工作中,始终都绕不开集合.在单线程环境下,ArrayList就可以满足要求.多线程时,我们可以使用CopyOnWriteArrayList来保证数据安全.下面我们一起来 ...
- Swift3.0学习之Button
1.根据字符串的长度确定Button的长度(button的高度给定) let hight:CGFloat = 30.0 let size1 = CGSize(width: getLabWidth(la ...
- CyclicBarrier回环屏障深度解析
1. 前沿 从上一节的CountDownLatch的学习,我们发现其只能使用一次,当state递减为0后,就没有用了,需要重新新建一个计数器.那么我们有没有可以复用的计数器呢?当然,JUC包给我们提供 ...
- Oracle创建表空间创建用户授权
注意:SYS用户下执行.sys登录必须为sysdba身份.查看数据文件存放位置. select * from dba_data_files; 1.创建表空间 CREATE TABLESPACE tp_ ...
- [leetcode]669. Trim a Binary Search Tree寻找范围内的二叉搜索树
根据BST的特点,如果小于L就判断右子树,如果大于R就判断左子树 递归地建立树 public TreeNode trimBST(TreeNode root, int L, int R) { if (r ...
- kill的使用
Linux中Kill进程的N种方法 (2011-12-23 17:27:59) 转载▼ 标签: 杂谈 分类: ubuntu系统操作 常规篇: 首先,用ps查看进程,方法如下: $ ps -ef -- ...
- Go-Zero 短链项目 DevOps 实战,利用 Drone CI/CD 打通上云(Kubernetes)迭代流程
Go-Zero 官方短链项目教程:快速构建高并发微服务 关于 go-zero,大家可以看文档.为少认为它是中国目前最好用的 golang 微服务框架. 完整的 Go-Zero ShortUrl Dev ...