【eladmin项目拆解】注解@RequiredArgsConstructor详解

基本原理

@RequiredArgsConstructor 是 Lombok 库中的一个注解,用于自动生成一个包含所有带有 @NonNull 注解的成员变量的构造函数。这个注解通常用于简化 Java 类的编写,特别是用于创建不可变对象时很有用。在使用 @RequiredArgsConstructor 注解后,Lombok 会为每个带有 @NonNull 注解的成员变量生成一个对应的参数,并在构造函数中进行初始化。这样可以减少重复的样板代码,提高代码的可读性和可维护性。

例如,以下是一个使用 @RequiredArgsConstructor 注解的示例:

import lombok.NonNull;
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class MyClass {
    private final String name;
    @NonNull private final Integer age;
    private String address;
    
    // 生成的构造函数包含所有带有 @NonNull 注解的成员变量
}

eladmin项目应用场景

在eladmin项目中,controller或service层中需要注入多个mapper接口或者另外的service接口,这时候代码中就会有多个@AutoWired注解,使得代码相对混乱。这时候, @RequiredArgsConstructor 写在类上面可以代替@AutoWired注解,需要注意的是:在注入的时候需要用final定义,或者使用@notnull注解。

package me.zhengjie.modules.system.rest;

import cn.hutool.core.lang.Dict;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import me.zhengjie.annotation.Log;
import me.zhengjie.modules.system.domain.Role;
import me.zhengjie.exception.BadRequestException;
import me.zhengjie.modules.system.service.RoleService;
import me.zhengjie.modules.system.domain.vo.RoleQueryCriteria;
import me.zhengjie.utils.PageResult;
import me.zhengjie.utils.SecurityUtils;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * @author Zheng Jie
 * @date 2018-12-03
 */
@RestController
@RequiredArgsConstructor
@Api(tags = "系统:角色管理")
@RequestMapping("/api/roles")
public class RoleController {

    private final RoleService roleService;

    private static final String ENTITY_NAME = "role";

    @ApiOperation("获取单个role")
    @GetMapping(value = "/{id}")
    @PreAuthorize("@el.check('roles:list')")
    public ResponseEntity<Role> findRoleById(@PathVariable Long id){
        return new ResponseEntity<>(roleService.findById(id), HttpStatus.OK);
    }

相关推荐

  1. eladmin项目拆解注解@RequiredArgsConstructor详解

    2024-04-22 14:26:07       89 阅读
  2. eladmin项目拆解】登录功能实现源码

    2024-04-22 14:26:07       25 阅读
  3. 详细需求的拆解

    2024-04-22 14:26:07       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-22 14:26:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-22 14:26:07       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-22 14:26:07       87 阅读
  4. Python语言-面向对象

    2024-04-22 14:26:07       96 阅读

热门阅读

  1. 江西公安公布多起网络安全案例

    2024-04-22 14:26:07       44 阅读
  2. SpringBoot的 jar 可以直接运行 怎么解释

    2024-04-22 14:26:07       37 阅读
  3. 嵌入式linux系统中man手册中文设置方法

    2024-04-22 14:26:07       39 阅读
  4. 机器学习在基因组学中的应用

    2024-04-22 14:26:07       43 阅读
  5. 基于springboot的共享汽车管理系统源码数据库

    2024-04-22 14:26:07       33 阅读
  6. FlinkSQL Tips

    2024-04-22 14:26:07       40 阅读
  7. 第三方社交登陆流程

    2024-04-22 14:26:07       32 阅读