Java 实体类增加 lombok @Data 注解如何使用(@Getter、@Setter、@Builder、@NoArgsConstructor等注解的使用)

Springboot的 Lombok全部关联注解以及核心注解@Data详解 阅读详情

在日常开发中,我们经常要对一个实体类的属性增加 get、set 的方法,不仅占用篇幅长,而且显得代码冗余,也是重复造轮子的例子。

我们经常看到别人的项目只需要增加一个 @Data 就省去了属性的 get、set 方法,怎么做到的呢?

其实就是增加 lombok 依赖和 IDEA 安装插件。

 

步骤1、pom.xml 增加 lombok 的依赖

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

maven 会自动帮我们把最新的 lombok 依赖导入,如图:

 

我们在一个实体类上增加 @Data 注解,就不需要显示的写出生成 get、set 方法了

package com.study.entity;

import lombok.*;

/**
 * @author biandan
 * @description
 * @signature 让天下没有难写的代码
 * @create 2021-06-06 下午 5:45
 */
@Data
public class UserEntity {

    private Integer id;

    private String userName;

    private String password;

    private String desc;

}

不过在使用实体类的时候,还是有点不顺(红色波浪线,看起来像报错的样子。但是它能编译通过,而且能运行。):

运行测试:

步骤2、IDEA 安装 Lombok 插件

在 IDEA 上找到 File -》Settings -》Plugins,在搜索框输入 lombok

如果我们 IDEA 没安装 lombok 插件,点击【Search in repositories】去插件市场寻找。

找到 Lombok 插件,这个被下载了一千多万的插件,右边点击安装 install。安装完毕后,点击重启 IDEA 即可。

 

效果图。不报红色了,而且对着方法按住 Ctrl + 鼠标左键  还能跳到属性值上,靠谱,好使!

OK,就是2个步骤。

 

 

此外,还有几个常用的注解,我们有必要了解一下。

@Data
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder

@Getter,顾名思义就是为实体属性增加 get 方法。@Setter,就是给属性增加 set 方法。@Getter + @Setter = @Data

当然,我们还可以限制属性的 set 属性在哪些包中可以用,比如限制在相同的包下可以使用:@Setter(AccessLevel.PACKAGE)

效果,如果不在相同的包下使用,并且还使用了 setXXX 的方式注入属性,则报错。编译不通过。这个在 DDD 思想中,有很重要的作用:在业务层的实体属性不允许使用 set 方法给属性注入值,避免数据被篡改。DDD思想:https://baike.so.com/doc/5568600-7566899.html

编译不通过效果图:

 

再说其它几个注解:

@NoArgsConstructor 是无参构造函数,如果是 @NoArgsConstructor(access = AccessLevel.PACKAGE) 说明只有在相同的包下,才能使用无参构造函数,否则报错。

@AllArgsConstructor 是全部参数的构造函数,如果是 @AllArgsConstructor(staticName = "of") 说明要想构造一个全部参数的实体,必须按照参数的定义顺序依次填写属性,当然,of 也可以改为其它单词,一般行业都喜欢用 of。如图:

UserEntity u = UserEntity.of(1,"名字","123","描述");

@Builder 是也是构造器的意思,不过比 of 的构造器灵活,你可以根据需要来构造属性值,不一定把属性全部构造,我们在使用老外封装的接口,经常可以把很多属性使用 . 来赋值,就是这个原理,如:

        UserEntity e = UserEntity.builder()
                .id(11)
                .userName("流放")
                .password("abc")
                .build();

 

OK,lombok 的插件讲解到这,老铁,帮助到你了吗?

 

Lombok插件的安装和使用详解 我们知道,Lombok插件是目前Java中使用频率非常高的一款插件,可以在编译阶段自动生成实体类的常用方法。// 没有使用Lombok插件的实体类,需要手动写getter和setter,以及构造方法等return id;return age;// 使用了Lombok插件的实体类@Data // 此注解自动生成getter和setter,toString,equals和hashCode等方法@NoArgsConstructor // 此注解生成无参构造函数。 阅读详情

相关推荐

Lombok,可以使用注解减少冗余代码的插件(最全讲解)

1.日志类 private static 2.@date 无用信息太多 3.@toString 用+连接,性能不太好 4.@builder 无法复制,无法通过JSONObject转化为对象,加两个构造器

d303577562的博客 2240

Lombok @Data使用

lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter方法啊,构造函数啊之类的,lombok的作用就是为了省去我们手动创建这些代码的麻烦,它能够在我们编译源码的时候自动帮我们生成这些方法。lombok能够达到的效果就是在源码中不需要...

Alex的博客 7万+

Lombok原理和同时使⽤@Data和@Builder 的坑

Lombok使⽤ 同时使⽤@Data和@Builder ,构建无参构造器报错!编译不通过。如下图: Lombok使⽤@Data可以⽣成⽆参构造和类⾥⾯所有属性的getter/setter⽅法。可以简化我们代码的开发。(需要安装Lombok插件和引⼊Lombok依赖)。例如下⾯的⼀个实体类,引⼊Lombok后,可以⾃动⽣成GET/SET⽅法和⽆参构造函数。 编译后的class为:可以看到不仅帮我们生成了get和set ,同时也有默认的无参构造器 那么怎么自动生成有参构造器呢?使用@Builder注解,将会帮助

a6636656的博客 1872

Lombok中@Data注释的使用

在上面的代码中,使用@Data注释对User类进行注释,它会自动生成User类的getter和setter方法、toString方法、equals方法和hashCode方法。使用@Data注释可以使代码更加简洁明了,减少冗余的getter和setter方法的编写,提高开发效率。除了@Data注释外,Lombok框架还提供了其他常用的注释标签,例如@Getter、@Setter、@ToString、@EqualsAndHashCode等,它们都可以帮助开发者更快捷地编写出高质量的JavaBean类。

weixin_51451545的博客 2356

Lombok注解的用法及示例代码

Getter和@Setter是Lombok最常用的注解之一,它们用于自动生成类的getter和setter方法。在本文中,我将介绍几个常用的Lombok注解,并提供相应的示例代码。在上面的示例代码中,我们使用@NoArgsConstructor注解生成了一个无参构造函数,以及@AllArgsConstructor注解生成了一个包含name和age字段的全参构造函数。在上面的示例代码中,我们使用@Getter和@Setter注解为Person类生成了对应的getter和setter方法。

CyberWizarDD的博客 163

Java中的@Data注解

其中一个非常有用的注解是@Data注解。这个注解可以自动为我们生成一些常见的代码,如getter和setter方法、equals方法、hashCode方法等。这个注解可以自动为我们生成一些常见的代码,如getter和setter方法、equals方法、hashCode方法等。在上面的代码中,我们使用了@Data注解来自动为Person类生成getter和setter方法以及equals和hashCode方法。通过使用@Data注解,我们可以轻松地生成常见的代码,从而减少编写重复代码的工作量,提高开发效率。

ScriptCharm的博客 1982

@builder,@NoArgsConstructor,@AllArgsConstructor,@Getter,@Setter注解—lombok注解遇到的问题

在开发过程中,lombok的使用极大的简化了实体类的开发工作。在通常情况下我们需要手动去建立getter和setter方法,构造函数之类的,而lombok的作用就是能够在我们编译源码的时候自动帮我们生成这些方法,这些都是通过注解的方式:如@builder,@NoArgsConstructor,@AllArgsConstructor,@Getter,@Setter,@data等等。 a....

banlong0774的博客 3413

lombok几个基本注解的使用@Data@AllArgsConstructor@NoArgsConstructor@Builder

lombok是一款在java开发中简洁化代码十分有用的插件工具,这篇博客对较为常用的几种注解进行记录,分享学习心得。 使用lombok注解,目的和作用就在于不用再去写经常反复去写的(如Getter,Setter,Constructor等)一些代码了。 首先,用到的几个注解: @Data 使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toS...

止水 16万+

Lombok同时使⽤@Data和@Builder遇到的坑

注解的时候,由于 Lombok 给我们默认生成了默认访问权限的全参构造函数,此时 Java 编译器就不会给我们提供默认的无参构造函数,所以我们还是只能使用链式调用的方式创建对接,调用无参构造函数时会报错。当同时给类添加@Builder和@NoArgsConstructor注解时,会出现编译失败的问题,这是因为 Lombok 的 @Builder 注解需要一个合适的构造方法来生成构建器,而。只能通过添加构造函数来创建对对象了,可以通过手动编写,也可以同注解的方式生成构造函数。注解之后,再看下编译之后的。

CoderJia的学习之路 1417

JAVA:Spring Boot 集成 Lombok 注解工具库

Lombok是一个通过注解简化Java开发的工具库,能自动生成Getter/Setter、构造方法、日志工具等常见代码。本文从基础到高级用法全面介绍Lombok,包括@Data、@Builder等核心注解的使用,以及日志集成、链式调用、不可变对象(@Value)等高级功能。文章还提供了Maven依赖配置和IDE插件安装指南,并强调Lombok在提升开发效率的同时,需注意代码可读性。适合Java开发者快速掌握Lombok的核心功能,有效减少样板代码。

木头 1349

Quartz定时任务调度框架中的Misfire策略实战解析

本文深入解析了Quartz定时任务调度框架中的Misfire(失火)处理策略。针对SimpleTrigger和CronTrigger两种常用触发器,详细对比了其各自的Misfire指令(如NowWithExistingCount、FireAndProceed等)的核心行为与适用场景,并提供了基于不同业务需求(如数据补跑、时间点敏感度)的实战选型指南,帮助开发者构建更健壮可靠的任务调度系统。

weixin_29250573的博客 77

@NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor的区别和@Data和@Builder的用法以及在idea中使用的注意事项

①使用@NoArgsConstructor②使用@AllArgsConstructor①同时使用②单独使用@NoArgsConstructor③单独使用@AllArgsConstructor两个能共同使用能单独使用@AllArgsConstructor或@NoArgsConstructor(两个不能同时使用)

qq_64835762的博客 3800

一。CST 电路 微带低通滤波器设计练习 I

CST 电路和系统软件功能还是比较强的,我们一起一步一步学习,一起进步。 这个例子出现在CST的电路和系统软件功能(Circuit Simulation & SAM (System Assembly and Modeling) )介绍资料中。本文是用CST2021建模操作仿真到,不同版本在视觉和结果上稍有不同。 利用电路模块可以很快很准确地建立3D微带平面电路,用于仿真滤波器、功分器、巴伦等等。

麦克斯韦信徒的博客 3238

注解、小辣椒实体类全部注解、链式调用注解、IDEA lombok注解下载配置使用、spring boot lombok所有注解

1、idea安装lombok插件 1.下载 首先我们需要安装IntelliJ IDEA中的lombok插件,打开IntelliJ IDEA后点击菜单栏中的File–>Settings,或者使用快捷键Ctrl+Alt+S进入到设置页面。 2.配置 ...

李程程的博客 3892

vcs 覆盖率收集1——三种覆盖率类型、covergroup、bins、数据采样、覆盖率选项

介绍各种覆盖率,以及如何编写覆盖率收集的代码

qq_42135020的博客 1万+

SAP 接口测试操作-业务顾问

业务顾问测试接口操作

weixin_43657667的博客 5162

lombok几个基本注解的使用@Data @AllArgsConstructor @NoArgsConstructor @Builder

lombok是一款在java开发中简洁化代码十分有用的插件工具,这篇博客对较为常用的几种注解进行记录,分享学习心得。 使用lombok注解,目的和作用就在于不用再去写经常反复去写的(如Getter,Setter,Constructor等)一些代码了。 首先,用到的几个注解: @Data 使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toS...

Allenlzcoder的博客 1381

Win11 1 月更新黑屏循环故障技术分析与解决方案

2026年1月30日Windows 11更新引发黑屏循环故障,主要影响2018年前出厂、采用MBR分区及特定BIOS固件的设备,尤其对使用经典版Outlook(POP协议)的用户影响显著。故障表现为系统无限重启黑屏,导致数据访问中断。分析表明,问题源于硬件兼容性、分区格式与系统更新的交互冲突。解决方案包括进入安全模式回滚更新、暂停自动更新、升级驱动/BIOS,以及等待微软官方补丁。建议用户更新前评估硬件兼容性并备份数据,企业环境应建立分阶段更新测试机制。该事件为系统更新风险管理提供了重要参考。

博客 1444

lombok的使用@Data、@Slf4j、@Builder

lombok的使用@Data、@Slf4j、@Builder

enthan809882的博客 1527

12、认知地图的建模与学习

本博客系统介绍了认知地图的定义、背景及其在机器智能领域的应用,重点探讨了模糊认知地图(FCMs)的建模方法与优势。文章还对比分析了几种主流的认知地图模型(如Axelrod模型、Kosko模型等),并讨论了模型的稳定性条件及实际应用前景。通过智能制造和医疗诊断的具体案例,展示了认知地图在复杂因果推理中的强大能力,并提出了模型优化方向与未来研究展望。

plant的博客 210

AI Agent Harness自动化漏洞扫描

本文要介绍的AI Agent Harness自动化漏洞扫描方案,正是为了解决传统漏扫的上述痛点而生。漏洞检出率提升35%以上,逻辑漏洞检出率从不足30%提升到92%误报率从27%降到3%以下,人工复核成本降低90%支持自定义业务系统、IoT、工控等多场景资产扫描,适配成本降低80%内置反馈学习机制,扫描效果越用越好AI Agent是指具备自主感知、决策、行动能力的大模型驱动程序,它可以根据给定的目标,自主调用工具、规划步骤、完成任务。

AI 原生应用开发的博客 473

Lombok 注解简洁说明

Lombok注解: val: final 像动态语言一样,声明一个fianl的变量。 var: 同JDK10 @Data:注解在类上,将类提供的所有属性都添加get、set方法,并添加、equals、canEquals、hashCode、toString方法 @Setter:注解在类上,为所有属性添加set方法、注解在属性上为该属性提供set方法 @Getter:注解在类上,为所有的属性添加get...

大痴小乙的博客 3092

PyTorch实战(20)——生成对抗网络(Generative Adversarial Network,GAN)

自生成对抗网络 (Generative Adversarial Network, GAN) 提出以来,一直是一个活跃的研究和开发领域。本节探索了 GAN 的基本概念,重点解析了其两大核心组件——生成器与判别器的架构设计,深入阐述了 GAN 模型的整体工作机制,并使用 PyTorch 从零开始实现了深度卷积生成对抗网络 (Deep Convolutional GAN, DCGAN)。

盼小辉丶的博客 3558

【Java注解系列】注解 @Builder

@Builder` 注解是 Lombok 提供的一种注解,用于简化构建对象的过程。通过在类上添加 `@Builder` 注解,可以自动生成一个建造者模式相关的代码,使得对象的构建更加简洁和易读。

wang2leee的博客 9520

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

@Data和@Builder注解解析

====================================================================== @Data 和 @Builder是使用 lombok过程中常用的两个注解, @Data:将一个普通类变成JavaBean,并自动生成相应属性的 Getter,Setter等方法; @Builder:用构造者模式,通过链式方法帮助我们生成对象。 ==============================================================

abc1641211976的博客 6776

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Lombok 速查指南:从基础注解到避坑实录

摘要:本文深入解析了Lombok工具的核心注解与实战应用技巧。重点介绍了@Getter/@Setter的访问控制、构造器注解与Spring整合的最佳实践,特别强调@RequiredArgsConstructor可替代@Autowired实现优雅注入。针对常见的@Data陷阱,详细分析了其在JPA实体中的禁用原因(性能问题和可变字段风险),并给出解决方案。文章还提供了@Builder和@Value等进阶用法,最后附上注解决策图谱,强调Lombok应服务于代码清晰度而非隐藏逻辑。特别提醒开发者检查JPA实体中是

曦煜墨白的博客 943

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: 基于 Oauth2 搭建微服务 API 开放平台第 3 篇 —— 搭建资源服务 order-server(完结)
下一篇: 系列学习 Swagger 之第 1 篇 —— 认识 Swagger,Swagger 简单入门
流放深圳
博客等级 码龄12年 495粉丝 294原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值