Spring Boot整合Lombok

一、Lombok简介

Lombok 是一种 Java 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注释实现这一目的。通过在开发环境中实现  Lombok,开发人员可以节省构建诸如 hashCode() 和 equals() 这样的方法以及以往用来分类各种 accessor 和 mutator 的大量时间。

 

 

二、整合Lombok

安装Lombok插件

1.直接从http://plugins.jetbrains.com/下载,然后放到idea安装文件下面的plugins,然后重启idea
2.在idea的settings(windows)或者Preferences(mac),下找到plugins菜单,点击Browse repositories,如图

 

在项目pom文件中加入lombok依赖

<!--lombok-->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<optional>true</optional>
</dependency>

 

使用@Data注解测试

@Data等价于上面的@Setter@Getter@RequiredArgsConstructor@ToString@EqualsAndHashCode

package com.smartadmin.entity.common;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

import java.io.Serializable;

/**
 * Page
 *
 * @Author: hanYong
 * @CreateTime: 2020-11-25
 */
@Data
public class EsPage implements Serializable {

    private static final long serialVersionUID = 8398867132297251568L;

    /** 分页起点 */
    private Integer from;

    /** 最多返回size条记录 */
    private Integer size;

    /** 排序字段名 */
    private String field;

    /** 排序方式 */
    private String order;

    public static void main(String[] args) {
        EsPage esPage = new EsPage();
        esPage.setField("123");
        System.out.println(esPage.toString());
    }
}

 

 

三、Lombok注解简介

@Data 标签,生成getter/setter toString()等方法 
@NonNull : 让你不在担忧并且爱上NullPointerException 
@CleanUp : 自动资源管理:不用再在finally中添加资源的close方法 
@Setter/@Getter : 自动生成set和get方法 
@ToString : 自动生成toString方法 
@EqualsAndHashcode : 从对象的字段中生成hashCode和equals的实现 
@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor 
自动生成构造方法 
@Data : 自动生成set/get方法,toString方法,equals方法,hashCode方法,不带参数的构造方法 
@Value : 用于注解final类 
@Builder : 产生复杂的构建器api类 
@SneakyThrows : 异常处理(谨慎使用) 
@Synchronized : 同步方法安全的转化 
@Getter(lazy=true) : 
@Log : 支持各种logger对象,使用时用对应的注解,如:@Log4j

其它注解参考:https://projectlombok.org/tidelift

 

 

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
好的,下面是详细的代码,其中包含了Spring Boot和Elasticsearch 7.9.0版本的整合,实现了基本的CURD操作,并且具有扩展性: 1. 添加依赖 首先,在pom.xml中添加以下依赖: ```xml <dependencies> <!-- Elasticsearch 7.9.0 --> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.9.0</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.9.0</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> <version>7.9.0</version> </dependency> <!-- Spring Boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> ``` 2. 配置文件 在application.properties中配置Elasticsearch连接信息: ```properties elasticsearch.host=127.0.0.1 elasticsearch.port=9200 elasticsearch.scheme=http ``` 3. 编写配置类 创建一个Elasticsearch配置类,用于创建Elasticsearch客户端: ```java import org.elasticsearch.client.RestHighLevelClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.client.ClientConfiguration; import org.springframework.data.elasticsearch.client.RestClients; import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; @Configuration public class ElasticsearchConfig extends AbstractElasticsearchConfiguration { @Value("${elasticsearch.host}") private String host; @Value("${elasticsearch.port}") private int port; @Value("${elasticsearch.scheme}") private String scheme; @Override @Bean public RestHighLevelClient elasticsearchClient() { final ClientConfiguration clientConfiguration = ClientConfiguration.builder() .connectedTo(host + ":" + port) .usingSsl("https".equals(scheme)) .build(); return RestClients.create(clientConfiguration).rest(); } @Bean public ElasticsearchRestTemplate elasticsearchTemplate() { return new ElasticsearchRestTemplate(elasticsearchClient()); } } ``` 4. 编写实体类 创建一个实体类,用于映射Elasticsearch中的文档: ```java import lombok.Data; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; @Data @Document(indexName = "article") public class Article { @Id private String id; private String title; private String content; } ``` 5. 编写DAO接口 创建一个DAO接口,继承自ElasticsearchRepository,用于操作Elasticsearch中的文档: ```java import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; public interface ArticleDao extends ElasticsearchRepository<Article, String> { } ``` 6. 编写服务类 创建一个服务类,用于对Elasticsearch中的文档进行CURD操作: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Optional; @Service public class ArticleService { @Autowired private ArticleDao articleDao; public void save(Article article) { articleDao.save(article); } public Optional<Article> findById(String id) { return articleDao.findById(id); } public void deleteById(String id) { articleDao.deleteById(id); } } ``` 7. 编写控制器 创建一个控制器,用于对Elasticsearch中的文档进行RESTful API操作: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Optional; @RestController @RequestMapping("/article") public class ArticleController { @Autowired private ArticleService articleService; @PostMapping public void save(@RequestBody Article article) { articleService.save(article); } @GetMapping("/{id}") public Optional<Article> findById(@PathVariable String id) { return articleService.findById(id); } @DeleteMapping("/{id}") public void deleteById(@PathVariable String id) { articleService.deleteById(id); } } ``` 这样,我们就实现了基本的Elasticsearch CURD操作,并且具有扩展性。我们可以根据需要,对DAO接口和服务类进行扩展,实现更加复杂的操作。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值