slf4j

来自lombok的注解(解决idea中的找不到get,set方法,找不到log的问题)

我与影子孤独终老i 提交于 2020-05-08 06:25:24
  今天看代码,发现idea报错,仔细一看调用的get,set方法bean中都没有,但是运行起来却没有问题,这个让我很疑惑。后来发现在类上有一个以前没见过的注解@Data,大概就是因为有他的原因。这个注解来自于lombok。   我们使用lombok的注解时,例如使用@Data,我们不需要再代码中再显示的写get,set方法等,当我们使用的时候可以直接使用注解给我们生成的get,set方法,但是此时idea是不知道这个注解的作用的,会误报没有这个方法,所以你会看到idea疯了一样的到处报错。为了解决这个问题,我们需要在idea中安装插件lombok plugin(直接在idea的prefrences->plugin里搜索就可以找到)。安装完重启idea问题就解决了。 下面我们来看一下lombok中都有哪些好用的注解   @NonNull : 注解在参数上, 如果该类参数为 null , 就会报出异常, throw new NullPointException(参数名)   @Cleanup : 注释在引用变量前, 自动回收资源 默认调用 close() 方法   @Getter/@Setter : 注解在类上, 为类提供读写属性   @Getter(lazy=true) :实际使用到的时候生成   @ToString : 注解在类上, 为类提供 toString() 方法   

记一次工作中使用延迟队列的场景

蹲街弑〆低调 提交于 2020-05-07 17:33:20
1 场景 公司是做物联网相关业务 最近在和移远对接流量卡的流量管理,具体业务涉及到卡停机,卡复机。 当用户充值之后,后台调用移远的卡复机接口复机,但是对接的时候实际测试下来,发现卡停机之后马上复机,会提示操作失败,经过沟通得知,这是运营商那边的接口返回的,卡停机之后不能马上复机。要间隔10分钟以上,上网搜索了一下,稍加思考,决定采用延迟队列的方式实现停机之后的复机操作, 当用户第一次操作复机返回失败的时候,放置到延迟队列里面,等待10分钟之后再执行 下面上代码 首先创建一个延迟队列管理类,采用spring 托管 package com.juyi.camera.config; import com.alibaba.fastjson.JSONObject; import com.juyi.camera.utils.task.DelayTask; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.concurrent

java中的类型擦除type erasure

≡放荡痞女 提交于 2020-05-07 07:40:02
简介 泛型是java从JDK 5开始引入的新特性,泛型的引入可以让我们在代码编译的时候就强制检查传入的类型,从而提升了程序的健壮度。 泛型可以用在类和接口上,在集合类中非常常见。本文将会讲解泛型导致的类型擦除。 举个例子 我们先举一个最简单的例子: [@Slf4j](https://my.oschina.net/slf4j) public class TypeErase { public static void main(String[] args) { ArrayList<String> stringArrayList = new ArrayList<String>(); stringArrayList.add("a"); stringArrayList.add("b"); action(stringArrayList); } public static void action(ArrayList<Object> al){ for(Object o: al) log.info("{}",o); } } 上面的例子中,我们定义了一个ArrayList,其中指定的类型是String。 然后调用了action方法,action方法需要传入一个ArrayList,但是这个list的类型是Object。 乍看之下好像没有问题,因为String是Object的子类,是可以进行转换的。

spring与mybatis的整合

牧云@^-^@ 提交于 2020-05-06 08:46:32
整合的思路 SqlSessionFactory对象放到spring容器中作为单例存在。 传统dao的开发方式中,从spring容器中获得sqlsession对象。 Mapper代理形式中,从spring容器中直接获得mapper的代理对象。 数据库的连接以及数据库连接池事务管理都交给spring容器来完成。 整合需要的jar包 要实现spring与mybatis的整合,就要首先导入相关的依赖jar包,如下:   Spring的jar包   Mybatis的jar包   Spring与mybatis整合的jar包   Mysql数据库驱动的jar包   Druid数据库连接池的jar包   Spring与Junit集成测试的jar包(spring-test、Junit)   日志的jar包    具体依赖 < properties > < spring-version > 4.2.4.RELEASE </ spring-version > </ properties > < dependencies > <!-- spring 核心 --> < dependency > < groupId > org.springframework </ groupId > < artifactId > spring-context </ artifactId > < version > $

Java日志记录--log4j and logback

梦想的初衷 提交于 2020-05-06 03:14:47
问题的引入: 把所有的信息打印在控制台上不行吗? 01. 控制台有行数限制; 02.System.out.println() 影响系统性能; 03. 如果我们需要对一些用户的行为习惯进行分析,我们找不到用户的数据! 程序中出现了问题怎么办? 01.debug 断点调试; ( 务必掌握 ) 02.System.out.println() 把信息打印在 console 控制台上(不会 debug ) 记录日志: 作用: 01. 记录代码中变量的变化情况,易于我们的代码调试和后期维护; 02. 周期性保存一些数据到文件中,以便于后续使用 ; 03. 可以设置日志信息的级别,便于管理。 组成部分: 01. 日志记录器 02. 日志的输出格式 03. 日志的输出目的地 七个输出级别: OFF 级别最高,用于关闭所有的日志记录 FATAL 严重的错误事件将会导致应用程序的退出 ERROR 错误事件,但仍然不影响系统的继续运行 WARN 会出现潜在错误的情形 INFO 消息在粗粒度级别上突出强调应用程序的运行过程 DEBUG 细粒度信息事件对调试应用程序非常有帮助 TRACE 细粒度比 DEBUG 更低的信息事件 ALL 级别最低,用于开启所有的日志记录 生产环境时,建议把 DEBUG 日志级别换成 WARN ,避免产生大量文件! 日志输出格式( Layout ) %p : 日志信息的优先级

Spring总结--> 第二结 SpringAOP日志

怎甘沉沦 提交于 2020-05-06 03:03:58
SpringAOP日志记录一下,代码就贴完整代码,一劳永逸。 SpringAOP面向切面编程,拦截指定代码,对该代码进行增强。 SpringAOP实现日志很简单 第一种方式配置XML文件 在Spring的XML文件中配置拦截 定义增强代码就OK了 运行结果 第二种方式注解 配置Spring.xml文件 1 <!-- 声明自动为spring容器中那些配置@aspectJ切面的bean创建代理 --> 2 < aop:aspectj-autoproxy proxy-target-class ="true" /> 定义增强代码 1 package com.xxw.util; 2 3 import org.aspectj.lang.JoinPoint; 4 import org.aspectj.lang.annotation.After; 5 import org.aspectj.lang.annotation.Aspect; 6 import org.aspectj.lang.annotation.Before; 7 import org.slf4j.Logger; 8 import org.slf4j.LoggerFactory; 9 import org.springframework.stereotype.Component; 10 11 import java.text

微服务全链路跟踪:jaeger增加tag参数

我们两清 提交于 2020-05-05 21:16:19
微服务全链路跟踪:grpc集成zipkin 微服务全链路跟踪:grpc集成jaeger 微服务全链路跟踪:springcloud集成jaeger 微服务全链路跟踪:jaeger集成istio,并兼容uber-trace-id与b3 微服务全链路跟踪:jaeger集成hystrix 微服务全链路跟踪:jaeger增加tag参数 前言 > 微服务全链路跟踪:grpc集成jaeger 中介绍了springboot集成jaeger,在现实使用时很多情况下需要根据业务id来搜索全链路,这里就需要注入tab来方便搜索, 方案 1、直接手动注入 @Controller @RequestMapping("/demo") @Api(tags = "demo") @Slf4j public class DemoController extends BaseController { @Autowired private Tracer tracer; /** * */ @GetMapping("/getTaskByid") public ApiResponse getByid(@RequestParam("id") Long id) { if (tracer!=null&&tracer.activeSpan()!=null) { tracer.activeSpan().setTag(“id”, id);

【Maven】---坐标与依赖

空扰寡人 提交于 2020-05-05 20:53:11
Maven坐标与依赖 最近想深度学习下maven,找到一本书叫《Maven实战》,这本书讲的确实很好,唯一遗憾的是当时maven教学版本是3.0.0的,而目前已经到了3.5.4了,版本存在差距, 没关系,如果有时间和精力我也会阅读官方文档,看看到底有哪些变换。 一、坐标详解 1、何为Maven坐标 maven定义了这样一组规则:世界上任何一个构件都可以使用maven坐标唯一标识,坐标元素包括: groupId、artifactId、version、packaging、classifier 。只要提供正确 的坐标就能从仓库中找到相应的构件供我们使用。maven从哪里下载构件呢?答:maven内置了一个中央仓库的地址,该中央仓库包含了世界上大部分流行的开源构件。 2、坐标详解 任何构件都必须明确定义自己的坐标,而一组maven坐标是通过一些元素定义的,他们是:groupId、artifactId、version、packaging、classifier。先看一组坐标定义如下 < groupId > org.sonatype.nexus </ groupId > < artifactId > nexus-indexer </ artifactId > < version > 2.0.0 </ version > < packaging > jar </ packaging >

011 @Retryable的使用

别说谁变了你拦得住时间么 提交于 2020-05-05 12:18:26
一:概述   在调用第三方接口或者使用mq时,会出现网络抖动,连接超时等网络异常,所以需要重试。   为了使处理更加健壮并且不太容易出现故障,后续的尝试操作,有时候会帮助失败的操作最后执行成功。   例如,由于网络故障或数据库更新中的DeadLockLoserException导致Web服务或RMI服务的远程调用可能会在短暂等待后自行解决。 为了自动执行这些操作的重试,Spring Batch具有RetryOperations策略。不过该重试功能从Spring Batch 2.2.0版本中独立出来,变成了Spring Retry模块。 二:示例 1.pom < dependency > < groupId > org.springframework.retry </ groupId > < artifactId > spring-retry </ artifactId > </ dependency > < dependency > < groupId > org.aspectj </ groupId > < artifactId > aspectjweaver </ artifactId > </ dependency > 2.配置类   只有启用@EnabelRetry才行,写在配置类或者启动类上都是可以的 package com.jun.web.config; import

SpringBoot与SpringCloud的版本对应详细版

回眸只為那壹抹淺笑 提交于 2020-05-05 11:59:26
大版本对应: Spring Boot Spring Cloud 1.2.x Angel版本 1.3.x Brixton版本 1.4.x stripes Camden版本 1.5.x Dalston版本、Edgware版本 2.0.x Finchley版本 2.1.x Greenwich.SR2 在实际开发过程中,我们需要更 详细的版本对应:Spring 官方对应版本地址: ( https://start.spring.io/actuator/info ), 建议用firefox浏览器打开,你会看见格式化好了json信息: spring-cloud-dependencies 版本列表可查看: https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies spring-boot-starter-parent 版本列表可查看: https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent 在SpringCloud中,1.X和2.X版本在pom.xml中引入的jar包名字都不一样,比如有的叫spirng-cloud-starter-hystrix 有的叫spring