Lombok

Spring Boot 使用 Maven 定制一个 parent 简化开发

余生长醉 提交于 2020-12-04 19:24:27
1/ 场景 有很多小应用,有一些公共的特点,比如说都依赖了spring-boot、log4j2、lombok、fastjson等等,为了方便开发,可以使用Maven定制一个parent来简化开发,统一管理第三方依赖的版本。(为后续的微服务做准备哦!) 2/ 构建 parent 2.1. 新建一个Maven工程,any-root。 2.2. 修改pom.xml,添加父工程的依赖,基本上子工程都会用到这些依赖。 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.ictgu</groupId> <artifactId>any-root</artifactId> <version>1.0.RELEASE</version> <packaging>pom<

How project Lombok in java works and is that possible in .net using attributes?

牧云@^-^@ 提交于 2020-12-04 18:00:07
问题 Project Lombok makes it trivial to implement the boilerplate code in the classes. Is that possible with .NET attributes? Is any .net port there? 回答1: Well in Lombok a Java class might look like this import lombok.Data; @Data public class Cart { private int id; private DateTime created; private int items; private int status; } While in C# the same class would look like this public class Cart { public int Id { get; set; } public DateTime Created { get; set; } public int Items { get; set; }

SpringBoot:如何优雅地处理全局异常?

你离开我真会死。 提交于 2020-12-02 00:55:08
之前用springboot的时候,只知道捕获异常使用try{}catch,一个接口一个try{}catch,这也是大多数开发人员异常处理的常用方式,虽然屡试不爽,但会造成一个问题,就是一个Controller下面,满屏幕的try{}catch,看着一点都不优雅,一点都不符合小明的气质,憋了这么久,小明今天终于决定对所有异常实施统一处理的方案。 开发准备 JDK8、正常的springboot项目 代码编写 通用异常处理 其实Spring系列的项目全局异常处理方式早已存在,只不过我们一直忙于搬砖,很少停下脚步去审视这个日夜与我们相伴的朋友。为了贴合主题,本次主要针对SpringBoot全局异常处理进行举例说明。 SpringBoot中有一个 @ControllerAdvice 的注解,使用该注解即表示开启全局异常捕获,接下来我们只需在自定义的方法上使用 @ExceptionHandler 注解,并定义捕获异常的类型,对这种类型的异常进行统一的处理。 举个例子: 假如我们需要针对NullException(空指针异常,是Java程序员最痛恨的异常,没有之一)进行全局处理(如下所示)。 @RestControllerAdvice public class GlobalExceptionHandler { /** * 处理空指针的异常 * @param req * @param e *

使用 log 占位符便利日志输出

∥☆過路亽.° 提交于 2020-11-26 09:51:56
在开发活动中, 记日志是一个很常见的操作. 记日志经常涉及到拼接字符串, 因为我们常常需要把参数的值输出出来, 同时拼上字样的提示, 这样后续查看时才好知道发生了什么. 比如这样: package net.xiaogd.sample.mybatis.controller; import lombok.extern.slf4j.Slf4j; import net.xiaogd.sample.mybatis.entity.User; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RestController; @Slf4j @RestController public class LogController { @GetMapping("/hello") public String hello(@ModelAttribute User user) { log.info("username: " + user.getUsername() + " , age: " + user.getAge());

新来个技术总监,禁止我们使用Lombok!

旧时模样 提交于 2020-11-25 18:47:36
我有个学弟,在一家小型互联网公司做Java后端开发,最近他们公司新来了一个技术总监,这位技术总监对技术细节很看重,一来公司之后就推出了很多"政策",比如定义了很多开发规范、日志规范、甚至是要求大家统一使用某一款IDE。 但是这些都不是我这个学弟和我吐槽的点,他真正和我吐槽的是,他很不能理解,这位新来的技术总监竟然禁止公司内部所有开发使用Lombok。但是又没给出十分明确的,可以让人信服的理由。 于是他来找我聊天,问我这个要求到底是否合理。关于这个事情,我认为这位技术总监的出发点是好的,但是做法未免有些极端。 之所以说出发点是好的,是因为使用Lombok确实会带来很多问题,而且我个人在工作中也基本不主动使用。 之所以说不主动使用,那是因为有些同事的代码还是使用了的,所以我也被迫的要安装Lombok的插件。 既然聊到这个话题,就简单说说我的一些看法。 Lombok有什么好处? Lombok是一款非常实用Java工具,可用来帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象(POJO)。它通过注释实现这一目的。 如果大家对于Lombok比较了解的话,可以先跳过这一段,直接往后看,如果不是很熟悉的话,可以简单了解一下。 想在项目中使用Lombok,需要三个步骤: 一、IDE中安装Lombok插件 目前Lombok支持多种IDE,其中包括主流的Eclips、Intellji

SpringBoot+MyBatis配置多数据源

北战南征 提交于 2020-11-24 04:47:57
SpringBoot 可以支持多数据源,这是一个非常值得学习的功能,但是从现在主流的微服务的架构模式中,每个应用都具有唯一且准确的功能,多数据源的需求很难用到,考虑到实际情况远远比理论复杂的多,这里还是深入学习一个Mybatis的多数据源的配置,代码偏向于实战,提供Git地址,以供下载测试. https://gitee.com/zhoutao825638/Sprinboot_mybatis_ds.git <!--more--> 数据库脚本 我们首先声明记录一下数据库脚本创建了两个数据库,test1和test2 ,并且分别在不同的数据库中创建了student和lesson表. CREATE DATABASE `test1` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; ; USE `test1`; CREATE TABLE `student`( `id` VARCHAR(12) PRIMARY KEY, `name` VARCHAR(36) NOT NULL , `age` INTEGER DEFAULT 0 ); -- 插入数据 INSERT INTO test1.student (id, name, age) VALUES ('1', '张梦为', 1); INSERT INTO test1.student (id,

springboot使用RestHighLevelClient7简单操作ElasticSearch7增删查改/索引创建

心已入冬 提交于 2020-11-24 02:26:39
本次操作是在 Windows上安装ElasticSearch7 进行操作 导入依赖 <? xml version="1.0" encoding="UTF-8" ?> < project xmlns ="http://maven.apache.org/POM/4.0.0" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 </ modelVersion > < parent > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-parent </ artifactId > < version > 2.1.6.RELEASE </ version > < relativePath /> <!-- lookup parent from repository --> </ parent > < groupId > com.es.demo </ groupId > <

EasyExcel java实现excel简单读写操作(快速上手,复制粘贴即可)

强颜欢笑 提交于 2020-11-23 20:36:49
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。 一、导入maven坐标 Lombok可选,不导入的话需要手动写getter、setter、tostring <!-- easyexcel--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.1</version> </dependency> <!--xls--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version> 1.18.16</version> <

PBFT算法java实现

佐手、 提交于 2020-11-21 06:35:10
PBFT 算法的java实现(上) 在这篇博客中,我会通过Java 去实现PBFT中结点的加入,以及认证。其中使用socket实现网络信息传输。 关于PBFT算法的一些介绍,大家可以去看一看网上的博客,也可以参考我的上上一篇 博客 ,关于怎么构建P2P网络可以参考我的上一篇 博客 。 该项目的地址: GitHub 使用前的准备 使用maven构建项目,当然,也可以不使用,这个就看自己的想法吧。 需要使用到的Java包: t-io:使用t-io进行网络socket通信,emm,这个框架的文档需要收费(699RMB),但是这里我们只是简单的使用,不需要使用到其中很复杂的功能。 fastjson:Json 数据解析 lombok:快速的get,set以及toString hutool:万一要用到呢? lombok:节省代码 log4j:日志 guava:Google的一些并发包 结点的数据结构 首先的首先,我们需要来定义一下结点的数据结构。 首先是结点Node的数据结构: @Data public class Node extends NodeBasicInfo { /** * 单例设计模式 * @return */ public static Node getInstance () { return node; } private Node () {} private static

springmvc 异常处理

左心房为你撑大大i 提交于 2020-11-21 02:09:34
在之前使用springmvc,异常的处 理都是在controller层中进行try-catch,在springmvc中如何设置报错时跳转的页面呢?统一进行异常处理 1.配置错误视图解析器 在mvc配置文件中添加下边的配置 2.在方法前边使用@ExceptionHandler注解 该注解只能控制当前控制器汇中的异常,因此,我们把这个方法放到BaseController中,其他的controller都继承该BaseController,下面进行测试,为了避免影响,把上边的视图解析器注释了 // 异常处理的方法 @ExceptionHandler(RuntimeException. class ) public String handler1(RuntimeException ex, Model model){ if (ex instanceof AuthenticationException){ System.out.println( "处理方案1" ); model.addAttribute( "ex" ,ex); return "error" ; } else if (ex instanceof AuthorizationException){ System.out.println( "处理方案2" ); model.addAttribute( "ex" ,ex); return