SpringBoot--Lombok--Initailizr--yaml

news2024/12/24 3:06:58

目录

SpringBoot--Lombok

Lombok 介绍

● Lombok 作用

● SpringBoot 和IDEA 官方支持

Lombok 常用注解

Lombok 应用实例

代码实现

 在pom.xml 引入lombok

修改Furn.java 使用Lombok 注解简化代码,

解读

@NoArgsConstructor

@AllArgsConstructor

@ToString

@Setter

@Getter

 @Data

启动MainApp.java , 完成测试 

在idea 安装lombok 插件,

演示使用Lombok 支持日志输出( 建议使用slf4j)

 application.properties填写

修改HelloController.java 

Spring Initailizr

 Spring Initailizr 介绍

● Spring Initailizr 作用

方式1: IDEA 创建

2. 选择Spring Initializr 

3. 项目的设置

4. 选择需要的开发场景 

 5. 项目创建好后,自动生成启动类和单元测试代码等

 6. 说明:

方式2: start.spring.io 创建

注意事项和细节

1. 如果通过Spring Initailizr 的pom.xml 爆红

 2. 解决方案, 指定版本和当前的springboot 一致,刷新maven 即可解决

SpringBoot--yaml

yaml 介绍

- 基本说明

- 解读

使用文档

yaml 基本语法

数据类型

字面量

对象

1. 对象:键值对的集合, 比如map、hash、set、object

2. 举例说明​编辑

数组

1. 数组:一组按次序排列的值, 比如array、list、queue 

2. 举例说明

yaml 应用实例

需求图解

代码实现

yaml 使用细节


SpringBoot--Lombok

Lombok 介绍

● Lombok 作用

1. 简化JavaBean 开发, 可以使用Lombok 的注解让代码更加简洁

2. Java 项目中,很多没有技术含量又必须存在的代码:POJO 的getter/setter/toString;异常处理;I/O 流的关闭操作等等,这些代码既没有技术含量,又影响着代码的美观,Lombok应运而生

● SpringBoot 和IDEA 官方支持

1. IDEA 2020 已经内置了Lombok 插件
2. SpringBoot 2.1.x 之后的版本也在Starter 中内置了Lombok 依赖

Lombok 常用注解

Lombok 应用实例

 

需求说明使用Lombok 简化Furn.java 代码, 让代码简洁高效

代码实现

 在pom.xml 引入lombok

<!-- 引入lombok, 版本在spring-boot-dependencies-2.5.3.pom 指定了, 把光标放在
lombok ctrl+b 可以看到-->
    <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

-----------------------------------------看对应的版本--------------------------------------------- 

修改Furn.java 使用Lombok 注解简化代码,

提示:可以通过idea 自带的反编译功能, 看Furn.class 的源码, 就可以看到生成的完整代码.

@Component
@ConfigurationProperties(prefix = "furn01")
//@ToString //在编译时,生成toString, 默认情况下,会生成一个无参构造器
/**
 * 说明:
 * 1. Equivalent to {@code @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode}
 * 2. @Data 注解等价使用了 如下注解 @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode
 * 3. @RequiredArgsConstructor : 单独的说一下:
 */
//@Data
//说明: @NoArgsConstructor 在编译时,会生成无参构造器, 前面老师说过,默认情况下,会生成一个无参构造器
//说明:当我们有其它构造器生成时,如果你希望仍然有无参构造器就需要使用@NoArgsConstructor指定一下
//        ,否则就会覆盖无参构造器,从而代码错误
@NoArgsConstructor
//说明:@AllArgsConstructor 在编译时,会生成全参构造器
@AllArgsConstructor
@ToString
@Setter
@Getter
public class Furn {
    private Integer id;
    private String name;
    private Double price;
}

解读

@NoArgsConstructor

说明: @NoArgsConstructor 在编译时,会生成无参构造器, 默认情况下,会生成一个无参构造器
注意:当我们有其它构造器生成时,如果你希望仍然有无参构造器就需要使用@NoArgsConstructor指定一下,否则就会覆盖无参构造器,从而代码错误

@AllArgsConstructor

说明:@AllArgsConstructor 在编译时,会生成全参构造器

@ToString

如名其意 加上这个是后会生成重写toString方法

@Setter

如名其意 加上这个是后会生成重写set方法

@Getter

如名其意 加上这个是后会生成重写get方法

 @Data

说明:

1. Equivalent to {@code @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode}

2. @Data 注解等价使用了 如下注解 @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode

3. @RequiredArgsConstructor : 单独的说一下:

----------------反编译, 看源码----------- 

 

启动MainApp.java , 完成测试 

在idea 安装lombok 插件,

不装插件也可以用基本的注解,比如@Data @Getter 等, 但是不能使用其扩展功能, 比如日志输出..., 所以我们还是安装一下,也比较简单 

 

演示使用Lombok 支持日志输出( 建议使用slf4j)

 application.properties填写

#设置Furn的属性k-v
#前面的 furn01 是用于指定/区别不同的绑定对象, 这样可以再绑定Furn bean属性值时
#通过furn01 前缀进行区分
#furn01.id 中的id 就是你要绑定的 Furn bean的属性名
furn01.id=100
furn01.name=TV~~\u7535\u89c6\u673a
furn01.price=1000.9x

修改HelloController.java 

注意这里之所以可以读取到文件里面的K-V是我们在Fuen.java类中是加了前面有详细的

@ConfigurationProperties(prefix = "furn01")
@Slf4j
@Controller
public class HelloController {
    @RequestMapping("/hello")
    @ResponseBody
    public String hello() {
        return "hello, spring boot";
    }
    @Autowired
    Furn furn;
    @RequestMapping("/furn")
    @ResponseBody
    public Furn furn() {
        log.info("furn = " + furn);
        //占位用法
        log.info("furn = {} ", furn);
        return furn;
    }
}

 


 

Spring Initailizr

 Spring Initailizr 介绍

● Spring Initailizr 作用

1. 程序员通过Maven Archetype 来生成Maven 项目,项目原型相对简陋, 需要手动配置, 比较灵活.

2. 通过Spring 官方提供的Spring Initializr 来构建Maven 项目,能完美支持IDEA 和Eclipse,让程序员来选择需要的开发场景(starter),还能自动生成启动类和单元测试代码, 

3. Spring Initailizr 对Idea 版本有要求同时还要走网络, 我自己还是习惯用, Maven Archetype 来生成Maven 项目 注重演示

方式1: IDEA 创建

2. 选择Spring Initializr 

3. 项目的设置

4. 选择需要的开发场景 

 

 5. 项目创建好后,自动生成启动类和单元测试代码等

 

 6. 说明:

因为没有配置数据库连接信息,启动SpringBoot 应用程序会错误提示(如图), ,程序员根据项目需要进行配置(比如数据库连接设置等), 进行业务开发即可

方式2: start.spring.io 创建

注意事项和细节

1. 如果通过Spring Initailizr 的pom.xml 爆红

 
2. 解决方案, 指定版本和当前的springboot 一致,刷新maven 即可解决

 


 

SpringBoot--yaml

yaml 介绍

- 基本说明

1、YAML 是"YAML Ain't a Markup Language"(YAML 不是一种标记语言) 的递归缩写。在开发

的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言),

是为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名

【百度百科】

- 解读

1、YAML 以数据做为中心,而不是以标记语言为重点

2、YAML 仍然是一种标记语言, 但是和传统的标记语言不一样, 是以数据为中心的标记语

言.

3、YAML 非常适合用来做以数据为中心的配置文件[springboot : application.yml]

使用文档

官方文档:https://yaml.org/

yaml for java: https://www.cnblogs.com/strongmore/p/14219180.html

yaml 基本语法

1. 形式为key: value;注意: 后面有空格

2. 区分大小写

3. 使用缩进表示层级关系

4. 缩进不允许使用tab,只允许空格[有些地方也识别tab , 推荐使用空格]

5. 缩进的空格数不重要,只要相同层级的元素左对齐即可

6. 字符串无需加引号

7. yml 中, 注释使用#

数据类型

字面量

1. 字面量:单个的、不可再分的值。date、boolean、string、number、null

2. 保存形式为key: value 如图

 

 

对象

1. 对象:键值对的集合, 比如map、hash、set、object

行内写法: k: {k1:v1,k2:v2,k3:v3}

monster: {id: 100,name: 牛魔王}

#或换行形式

 k:

 k1: v1

 k2: v2

 k3: v3

 monster:

  id: 100

  name: 牛魔王

2. 举例说明

数组

1. 数组:一组按次序排列的值, 比如array、list、queue 

行内写法: k: [v1,v2,v3]
hobby: [打篮球, 打乒乓球, 踢足球]
#或者换行格式
k:
 - v1
 - v2
 - v3
hobby:
 - 打篮球
 - 打乒乓球
 - 踢足球

2. 举例说明

yaml 应用实例

需求: 使用yaml 配置文件和JavaBean 进行数据绑定, 体会yaml 使用方式

需求图解

1. 创建项目configuration , 完成yaml 的使用

2. 运行效果

 

代码实现

1. 创建一个新的SpringBoot 项目- configuration ,使用灵活配置方式创建项目

2. 在pom.xml 引入lombok, 并切换一下springboot 版本

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <!-- 引入lombok, 版本在spring-boot-dependencies-2.5.3.pom 指定了-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

 3. 创建\bean\Car.java 

提醒
一个小细节: 创建的bean 需要在SpringBootApplication 包或者其子包, 否则不会被默认扫描, 同时也不能完全使用lombok 的相关简化注解.

@ToString
@Data
public class Car {
    private String name;
    private Double price;
}

4. 创建bean\Monster.java


@ConfigurationProperties(prefix = "monster")
@Component
@ToString
@Data
public class Monster {
    private Integer id;
    private String name;
    private Integer age;
    private Boolean isMarried;
    private Date birth;
    private Car car;
    private String[] skill;
    private List<String> hobby;
    private Map<String, Object> wife;
    private Set<Double> salaries;
    private Map<String, List<Car>> cars;
}

5. 创建resources/application.yml, 演示各种写法.

提醒: 编写application.yml 时, 这些Bean 的字段是可以通过安装插件或jar 来自动提示的, 后面在说, 现在先苦后甜.

monster:
  id: 100
  name: "牛魔王~~"
  age: 500
  isMarried: true
  birth: 2000/10/10
  #对象
#  car: {name: 宝马, price: 200000} #行内格式
  car: #换行格式
    name: 宝马~
    price: 300000
  #数组
#  skill: [芭蕉扇, 牛魔拳] #行内格式
  skill:
    - 芭蕉扇~
    - 牛魔拳~
#  hobby: [喝酒, 吃肉] #行内格式
  hobby:
    - 喝酒~
    - 吃肉~
  #map-属于对象
#  wife: {no1: 玉面狐狸, no2: 铁扇公主} #行内风格
  wife:
    no1: 玉面狐狸~
    no2: 铁扇公主~
#  salaries: [10000,20000] #行内风格
  salaries:
    - 10000
    - 20000
  cars: #因为cars k-v v是list<Car> 所以我们使用换行风格
    group1:
      - {name: 奔驰, price: 300000}
      - name: 保时捷
        price: 400000
    group2:
      - {name: 奔驰~, price: 100000}
      - name: 保时捷~
        price: 500000

6. 创建HiController.java

@RestController
public class HiController {

    @Resource
    private Monster monster;

    @RequestMapping("/monster")
    public Monster monster() {
        return monster;
    }
}

7. 启动项目,完成测试

yaml 使用细节

1. 如果application.properties 和application.yml 有相同的前缀值绑定, 则application.properties 优先级高, 开发时,应当避免 

2. 字符串无需加引号, 这个在前面已经演示了, 如果你用" " 或者' ' 包起来, 也可以

 

 

3. 解决yaml 配置文件,不提示字段信息问题

1) 如图, 大家可以知道,在编写application.yml 文件时,没有提示Monster 的字段信息,
非常不方便 

2) 在pom.xml 加入spring-boot-configuration-processor 依赖, 可以从spring-boot-reference.pdf 拷贝 

<!-- 引入yaml 文件提示, 可以看到JavaBean 字段提示-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

 4) 对application.yml 文件编辑,就会提示字段, 提示: 输入你在Bean 配置的prefix 名字就会提示.

 

5) 提示: 如果还没有提出提示, 可以安装一个yaml 插件来搞定 .

 注意要重启iead

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/530919.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多种方法解决Please specify which branch you want to merge with的错误

文章目录 1. 复现错误2. 分析错误3. 解决错误3.1 远程有分支3.2 远程无分支 4. 总结 1. 复现错误 今天发布某版本的项目&#xff0c;准备创建个v0point1分支&#xff0c;后期如果修改该版本&#xff0c;直接在该分支上修改即可。 首先&#xff0c;使用git branch v0point1命令…

软考A计划-真题-分类精讲汇总-第十三章(专业英语)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

红黑树的实现

文章目录 红黑树前言1. 红黑树的概念及性质1.1 红黑树的概念1.2 红黑树的性质 2. 红黑树的结构2.1 红黑树节点的定义2.2 红黑树的结构 3. 红黑树的操作3.1 红黑树的查找3.2 红黑树的插入处理红黑树颜色的过程(重点)情况1: 只变色情况2: 变色 单旋情况3: 变色 双旋 处理颜色的…

ubuntu深度学习使用TensorFlow卷积神经网络——图片数据集的制作以及制作好的数据集的使用

首先我事先准备好五分类的图片放在对应的文件夹&#xff0c;图片资源在我的gitee文件夹中链接如下&#xff1a;文件管理: 用于存各种数据https://gitee.com/xiaoxiaotai/file-management.git 里面有imgs目录和npy目录&#xff0c;imgs就是存放5分类的图片的目录&#xff0c;里面…

哈工大计组大作业-RISC处理器设计

RISC_CPU_HIT RISC处理器设计 地址&#xff1a;https://github.com/944613709/Design-of-RISC-Processor.git 要求 根据计算机组成原理课程所学的知识&#xff0c;设计一个给定指令系统的处理器&#xff0c;深刻理解处理器结构和计算机系统的整体工作原理。 1. 处理器功能及…

软件工程(二) 软件开发模型

软件开发模型主要了解如下这些模型,加粗表示重点要掌握的模型。 瀑布模型: 迭代模型/迭代开开发方法 演化模型: 快速开发应用 增量模型: 构建组装模型/基于构建的开发方法 螺旋模型: 统一过程/统一开发方法 原型模型: 敏捷开发方法 喷泉模型: 模型驱动的开发方法 V模型: 基于架…

C/C++每日一练(20230516) 最佳时机、两数相加、后序遍历

目录 1. 买卖股票的最佳时机 &#x1f31f; 2. 两数相加 &#x1f31f;&#x1f31f; 3. 二叉树的后序遍历 &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 买卖股票…

D2. Red-Blue Operations (Hard Version)(思维/贪心/前缀和)

建议先从easy version开始做。 easy version题解 题目 题意 给定长度为n(1<n<200000)的数组 1<a[i]<10^9 q个查询(1<q<200000)&#xff0c;每次查询&#xff0c;给定整数k(1<k<10^9) 初始时&#xff0c;每个元素状态都是红色。 对于第i次操作&…

【小沐学Unity3d】Unity插件之天气系统UniStorm

文章目录 1、简介1.1 描述1.2 兼容性1.3 价格1.4 特点1.5 示例 3、安装3.1 新建Unity项目3.2 安装插件UniStorm3.3 介绍UniStorm工具栏3.4 入门使用 4、脚本开发4.1 接口简介4.1.1 天气4.1.2 时间4.1.3 程度4.1.4 季节4.1.5 系统4.1.6 其他 4.2 接口测试4.2.1 测试1 结语 1、简…

教你如何使用Nodejs搭建HTTP web服务器并发布上线公网

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 转载自内网穿透工具的文章&#xff1a;使用Nodejs搭建HTTP服务&#xff0c;并实现公网远程访问「内网穿透」 前言 Node.js…

60岁的机器视觉工程师,你还在敲代码?不想做机器视觉工程师,还可以做什么?机器视觉工程师职业生命线有多长​?

如果按程序员参加工作时间为22岁计算,平均退役年龄为35岁计算的话,程序员的职业寿命大概为14年。为什么程序员的职业生命线如此短暂呢?大致有以下几点—— 1、编程技术层出不穷,迭代速度非常快,这时候就需要我们不断的学习,不断地保持学习能力,当随着年龄的增长我们的学…

【数据结构】链表:带头双向循环链表的增删查改

本篇要分享的内容是带头双向链表&#xff0c;以下为本片目录 目录 一、链表的所有结构 二、带头双向链表 2.1尾部插入 2.2哨兵位的初始化 2.3头部插入 2.4 打印链表 2.5尾部删除 2.6头部删除 2.7查找结点 2.8任意位置插入 2.9任意位置删除 在刚开始接触链表的时候&…

86. print输出函数知识拓展(有练习题)

86. print输出函数知识拓展&#xff08;有练习题&#xff09; 文章目录 86. print输出函数知识拓展&#xff08;有练习题&#xff09;1. print函数语法2. 横着输出数字序列3. 竖着输出数字序列4. 循环输出5. 总结 1. print函数语法 print[prɪnt]&#xff1a;打印&#xff0c;…

少儿编程scratch -- 基础篇

1.开篇 花费40分钟 首先&#xff0c;我们学的是scratch(划痕&#xff09;&#xff0c;Scratch 是麻省理工学院的“终身幼儿园团队”在 2007 年 [5] 发布的一种图形化编程工具&#xff0c;主要面对全球青少年开放&#xff0c;是图形化编程工具当中最广为人知的一种&…

ShardingSphere-JDBC整合SpringBoot JPA读写分离失败

问题 最近在整合ShardingSphere JDBC和Spring Boot的时候遇到一个问题,当ORM框架使用JPA时,读写分离会失效,查询仍然走主库并不会走从库!同样的配置使用Mybatis就没有任何问题。 在查阅各种资料后,初步确定未JPA事务问题 ShardingSphere负载均衡算法 我当前使用的版本是…

FIDO认证 无密码的愿景

目录 1、简介 2、关于FIDO联盟 3、FIDO如何工作 3.1 FIDO 注册 3.2 FIDO登录 4、FIDO2 4.1 W3C WebAuthn 4.2 CTAP2 4.3 CTAP1 4.4 FIDO UAF 4.5 FIDO U2F 5、FIDO身份验证的优势 5.1 安全 5.2 便利性 5.3 隐私政策 5.4 可扩展性 1、简介 FIDO&#xff08;在线…

Python 爬虫(一):爬虫伪装

1 简介 对于一些有一定规模或盈利性质比较强的网站&#xff0c;几乎都会做一些防爬措施&#xff0c;防爬措施一般来说有两种&#xff1a;一种是做身份验证&#xff0c;直接把虫子挡在了门口&#xff0c;另一种是在网站设置各种反爬机制&#xff0c;让虫子知难而返。 2 伪装策…

【2023 · CANN训练营第一季】初识新一代开发者套件 Atlas 200I DK A2 第二章——安装Atlas 200I DK A2跑通第一个案例

准备相关软件 包括一台PC机&#xff08;空间大于10g)&#xff0c;读卡器&#xff0c;32gsd卡&#xff0c;一根网线。 具体步骤&#xff1a; 开始烧录开发板镜像&#xff1a;将sd卡插入读卡器&#xff0c;将读卡器插入PC机的USB接口&#xff0c;根据相关链接在PC机下载制卡工具…

混合云到底是什么?

大型企业不能再仅仅拥有本地系统就可以逃脱&#xff1b;因此&#xff0c;将一些数字化运营迁移到云端成为了必要。 第一步涉及选择是使用公共云还是私有云&#xff0c;或者两者都使用。使用两者是混合云。 但混合云到底是什么&#xff1f;在回答之前&#xff0c;让我们看看这…

图生图—AI图片生成Stable Diffusion参数及使用方式详细介绍

本文为博主原创文章&#xff0c;未经博主允许不得转载。 本文为专栏《Python从零开始进行AIGC大模型训练与推理》系列文章&#xff0c;地址为“https://blog.csdn.net/suiyingy/article/details/130169592”。 Stable Diffusion webui的详细安装步骤以及文生图&#xff08;txt2…