免费建设企业网站,网站怎么制作做,营销型公司官网建设,北京市工程建设信息网老韩学生 LombokLombok介绍Lombok常用注解Lombok应用实例代码实现idea安装lombok插件 Spring InitializrSpring Initializr介绍Spring Initializr使用演示需求说明方式1: IDEA创建方式2: start.spring.io创建 注意事项和说明 yaml语法yaml介绍使用文档yaml基本语法数据类型字面… 老韩学生 LombokLombok介绍Lombok常用注解Lombok应用实例代码实现idea安装lombok插件 Spring InitializrSpring Initializr介绍Spring Initializr使用演示需求说明方式1: IDEA创建方式2: start.spring.io创建 注意事项和说明 yaml语法yaml介绍使用文档yaml基本语法数据类型字面量对象数组 yaml应用实例需求图解代码实现注意事项和使用细节 ⬅️ 上一篇: springboot系列六: springboot底层机制实现 下 欢迎来到 springboot系列七: Lombok注解Spring Initializryaml语法
在本篇文章中我们将探索 Lombok 注解的使用Spring Initializr 的功能以及 yaml 语法的基本用法。这些工具和技术将帮助您更高效地开发 Spring Boot 应用程序。 本篇需要用到的项目: quickstart项目 Lombok
Lombok介绍
●Lombok介绍 1.简化JavaBean开发, 可以使用Lombok的注解让代码更加简洁. mybatis中学习过
2.Java项目中, 很多没有技术含量又必须存在的代码, POJO的getter/setter/toString异常处理I/O流的关闭操作等等这些代码既没有技术含量又影响着代码的美观Lombok应运而生。
●SpringBoot和IDEA官方支持 1.IDEA 2020已经内置了Lombok插件 2.SpringBoot 2.1.x之后的版本也在Starter中内置了Lombok依赖
Lombok常用注解 Lombok应用实例
代码实现
●需求说明 回到我们的 quickstart 项目, 使用Lombok简化Furn.java代码, 让代码简洁高效
1.在pom.xml中引入lombok 引入lombok, 版本在spring-boot-dependencies-2.5.3.pom已经指定了, 把光标放在lombok, ctrlb 可以看到. springboot依赖管理 2.修改Furn.java, 使用Lombok注解简化代码. 提示: 可以通过idea自带的反编译功能, 看Furn.class的源代码
Component
ToString //编译时, 生成toString方法, 默认情况下, 会生成一个无参构造器
ConfigurationProperties(prefix furn01)
public class Furn {private Integer id;private String name;private BigDecimal price;
}3.Data注解
Component
ConfigurationProperties(prefix furn01)
/*** 说明:* 1. Equivalent to {code Getter Setter RequiredArgsConstructor ToString EqualsAndHashCode}.* 2. Data 注解等价使用了 如下注解* Getter Setter RequiredArgsConstructor ToString EqualsAndHashCode* 3. RequiredArgsConstructor, 单独地说一下*/
Data
public class Furn {private Integer id;private String name;private BigDecimal price;
}编译后 4.RequiredArgsConstructor详解 在我们写controller或者Service层的时候需要注入很多的mapper接口或者另外的service接口这时候就会写很多的Autowired注解代码看起来很乱 lombok提供了一个注解:
RequiredArgsConstructor(onConstructor _(Autowired)) 写在类上可以代替Autowired注解需要注意的是在注入时需要用final定义或者使用notnull注解 5.NoArgsConstructor详解
/*** 说明: NoArgsConstructor 在编译时, 会生成无参构造器, 前面我们说过, 默认情况下, 会生成一个无参构造器* 说明: 当我们有其它构造器生成时, 如果你希望仍然有无参构造器, 就需要使用NoArgsConstructor显示声明一下* , 否则就会覆盖无参构造器 从而造成代码错误*/
//NoArgsConstructor/*** allArgsConstructor 在编译时 会生成全参构造器, 造成覆盖掉无参构造器, 项目启动, 报错* 解决方案一: 取消Furn作为Bean注入, 那么在需要自动装配Furn的位置, 通通注释掉* 解决方案二: 显式声明一下无参构造器, 可以手写, 也可以用NoArgsConstructor*/
AllArgsConstructor
public class Furn {private Integer id;private String name;private BigDecimal price;
}idea安装lombok插件
1.不装插件也可以使用基本的注解, 比如 Data, Getter 等.
2.但是不能使用其扩展功能, 比如 日志输出, 如意我们还是安装一下, 也比较简单. 3.演示使用Lombok支持日志输出(建议使用slf4j), 修改src/main/java/com/zzw/HiController.java
RequestMapping(/furn)
ResponseBody
public Furn furn() {//System.out.println(furn furn);//使用slfj日志输出//普通方式log.info(furn- furn);//占位符方式输出log.info(furn{}, myfurn{}, furn, furn);return furn;
}4.浏览器访问 http://localhost:8088/furn
前端显示 后端显示 2024-06-17 13:38:33.476 INFO 11584 — [nio-8088-exec-3] com.zzw.HiController : furn-Furn(id100, name家居, price6000) 2024-06-17 13:38:33.476 INFO 11584 — [nio-8088-exec-3] com.zzw.HiController : furnFurn(id100, name家居, price6000), myfurnFurn(id100, name家居, price6000)
前提: 1.Furn实体类要有toString方法, 否则后端输出对象地址. 2.Furn实体类要有setter方法, 因为application.properties中的属性通过setter方法设置, 否则后端输出null. 3.Furn实体类要有getter方法, 因为furn.id furn.name是通过getId和getName方法获取的, 否则前端不输出JSON信息.
Spring Initializr
Spring Initializr介绍
●Spring Initializr作用 1.程序员通过Maven Archetype 来生成Maven项目, 项目原型相对简陋, 需要手动配置, 但是比较灵活.
2.通过Spring官方提供的Spring Initializr来构建Maven项目, 能完美支持IDEA和Eclipse, 让程序员来选择需要的开发场景(starter), 还能自动生成启动类和单元测试代码.
3.Spring Initializr对 Idea 版本有要求, 同时还要走国外网络, 我们还是习惯使用Maven Archetype来生成Maven项目. 但是作为知识点, 还是要介绍一下.
Spring Initializr使用演示
需求说明
使用Spring Initializr创建SpringBoot项目, 并支持web应用场景, 支持MyBatis.
方式1: IDEA创建
1.创建项目
2.选择 Spring Initializr. 如果没有看到这个选项, 需要安装Spring Initializr插件 3.项目设置 4.选择需要的开发场景 5.项目创建好后, 自动生成启动类和单元测试代码 方式2: start.spring.io创建
https://start.spring.io/ 注意事项和说明
1.如果通过Spring Initializr创建项目, pom.xml爆红 2.解决方案: 指定版本和当前的springboot一致, 刷新maven即可解决 yaml语法
yaml介绍
●基本说明 1.YAML是YAML Ain’t 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.yaml中, 注释使用 #
数据类型
字面量
1.字面量: 单个的, 不可再分的值. date, boolean, string, number, null
2.number可以表示整数, 浮点数.
3.保存形式为key: value
对象
1.对象: 键值对的集合, 比如map, hash, object
行内写法: k: {k1: v1, k2: v2, k3: v3} monster: {id: 100, name: 牛魔王}
或
换行形式: k: k1: v1 k2: v2 k3: v3
monster: id: 100 name: 牛魔王 skill: 芭蕉扇
2.举例说明
数组
1.数组: 一组按次序排列的值, 比如 array, list, set, 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版本 !--导入springboot父工程-规定写法--
parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.5.3/version
/parentdependencies!--导入web项目场景启动器, 会自动地导入和web开发相关的所有依赖[库/jar]--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!--引入lombok, 使用版本仲裁--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency
/dependencies3.创建src/main/java/com/zzw/springboot/bean/Car.java. 小细节: 创建的bean需要在SpringBootApplication包或者其子包, 否则默认不会被扫描, 同时也不能完全使用lombok的相关简化注解. Data
public class Car {private String name;private double price;
}4.创建src/main/java/com/zzw/springboot/bean/Monster.java Component
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 ListString hobby;private MapString, Object wife;private SetDouble salaries;private MapString, ListCar cars;
}5.创建src/main/java/com/zzw/springboot/controller/HiController.java RestController
public class HiController {Autowiredprivate Monster monster;RequestMapping(/monster)public Monster monster() {return monster;}
}6.创建src/main/java/com/zzw/springboot/Application.java SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}7.启动项目, 进行测试. 为空, 说明还没有对数据进行配置绑定. 8.创建src/main/resources/application.yml, 演示各种写法. 提示: 编写application.yml 时, 这些Bean的字段是可以通过安装插件或jar来自动提示的, 后面会学到, 现在先苦后甜. monster:id: 100name: 牛魔王age: 200isMarried: truebirth: 2000/10/159.配置Furn. 参考properties的配置绑定 ConfigurationProperties(prefix monster)
public class Monster {}10.重启测试 11.完成后面数据的绑定 monster:id: 100name: 牛魔王age: 200isMarried: truebirth: 2000/10/15#对象
# car: {name: 奔驰, price: 120000} #行内风格car:name: 奔驰price: 160000 #换行风格#数组
# skill: [芭蕉扇, 七十二变, 刀枪不入] #行内风格skill:- 芭蕉扇~- 七十二变~- 刀枪不入~ #换行风格hobby:- 喝酒- 吃肉- 陪老婆 #换行风格#map-属于对象
# wife: {no1: 铁扇公主, no2: 狐狸精} #行内风格wife:no1: 铁扇公主no2: 狐狸精 #换行风格#set-属于对象
# salaries: [10000, 20000, 30000] #行内风格salaries:- 10000- 20000- 30000 #换行风格cars: # 因为cars k-v v是ListCar 所以我们使用换行风格group1:- {name: 奔驰, price: 120000}- name: 奥迪price: 130000group2:- {name: 宝马, price: 110000}- name: 兰博基尼price: 300000注意事项和使用细节 1.如果application.properties 和 application.yml 有相同的前缀值绑定, 则application.properties优先级高, 开发时, 应当避免. 2.字符串无需加引号, 如果你用 或者 ’ ’ 包起来, 也可以. 3.解决yaml 和 properties配置文件, 不提示字段信息问题 1)如图, 我们可以知道, 在编写application.yaml文件时, 不提示Monster的字段信息, 非常不方便 2)在pom.xml加入spring-boot-configuration-processor依赖, 可以从quickstart项目拷贝. dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactId!--这里我们配置optional为true说明: 表示防止将此依赖传递到其它模块--optionaltrue/optional
/dependency3)对application.yml文件编辑, 就会提示字段. 提示: 输入你在Bean中配置的prefix, 就会提示 4)提示: 如果还没有提示, 可以安装一个yaml插件来搞定. 下一篇预告: [即将更新敬请期待] 目录导航 springboot系列一: springboot初步入门springboot系列二: sprintboot依赖管理springboot系列三: sprintboot自动配置springboot系列四: sprintboot容器功能springboot系列五: springboot底层机制实现 上springboot系列六: springboot底层机制实现 下springboot系列七: Lombok注解Spring Initializryaml语法 … 读者互动 在使用 Lombok 注解Spring Initializr 和 yaml 语法的过程中您有哪些体会或问题欢迎在评论区留言让我们一起讨论吧
文章转载自: http://www.morning.yccnj.cn.gov.cn.yccnj.cn http://www.morning.kydrb.cn.gov.cn.kydrb.cn http://www.morning.dmlsk.cn.gov.cn.dmlsk.cn http://www.morning.kpzbf.cn.gov.cn.kpzbf.cn http://www.morning.youngbase.cn.gov.cn.youngbase.cn http://www.morning.mrbmc.cn.gov.cn.mrbmc.cn http://www.morning.zqdzg.cn.gov.cn.zqdzg.cn http://www.morning.jwcmq.cn.gov.cn.jwcmq.cn http://www.morning.rwfj.cn.gov.cn.rwfj.cn http://www.morning.kdtdh.cn.gov.cn.kdtdh.cn http://www.morning.lffgs.cn.gov.cn.lffgs.cn http://www.morning.frqtc.cn.gov.cn.frqtc.cn http://www.morning.sglcg.cn.gov.cn.sglcg.cn http://www.morning.qbtj.cn.gov.cn.qbtj.cn http://www.morning.zfkxj.cn.gov.cn.zfkxj.cn http://www.morning.prznc.cn.gov.cn.prznc.cn http://www.morning.cprbp.cn.gov.cn.cprbp.cn http://www.morning.ghxzd.cn.gov.cn.ghxzd.cn http://www.morning.wfbnp.cn.gov.cn.wfbnp.cn http://www.morning.rwjfs.cn.gov.cn.rwjfs.cn http://www.morning.ryglh.cn.gov.cn.ryglh.cn http://www.morning.hcsnk.cn.gov.cn.hcsnk.cn http://www.morning.ydrn.cn.gov.cn.ydrn.cn http://www.morning.mhnb.cn.gov.cn.mhnb.cn http://www.morning.mcwrg.cn.gov.cn.mcwrg.cn http://www.morning.bkslb.cn.gov.cn.bkslb.cn http://www.morning.wfhnz.cn.gov.cn.wfhnz.cn http://www.morning.ltdrz.cn.gov.cn.ltdrz.cn http://www.morning.xfncq.cn.gov.cn.xfncq.cn http://www.morning.nbrdx.cn.gov.cn.nbrdx.cn http://www.morning.qbfqb.cn.gov.cn.qbfqb.cn http://www.morning.yrkdq.cn.gov.cn.yrkdq.cn http://www.morning.psxfg.cn.gov.cn.psxfg.cn http://www.morning.cwzzr.cn.gov.cn.cwzzr.cn http://www.morning.yrmpr.cn.gov.cn.yrmpr.cn http://www.morning.rpms.cn.gov.cn.rpms.cn http://www.morning.mmsf.cn.gov.cn.mmsf.cn http://www.morning.flqbg.cn.gov.cn.flqbg.cn http://www.morning.tnthd.cn.gov.cn.tnthd.cn http://www.morning.qhrlb.cn.gov.cn.qhrlb.cn http://www.morning.rdwm.cn.gov.cn.rdwm.cn http://www.morning.kcypc.cn.gov.cn.kcypc.cn http://www.morning.gccrn.cn.gov.cn.gccrn.cn http://www.morning.jmspy.cn.gov.cn.jmspy.cn http://www.morning.msbpb.cn.gov.cn.msbpb.cn http://www.morning.zdfrg.cn.gov.cn.zdfrg.cn http://www.morning.ksjnl.cn.gov.cn.ksjnl.cn http://www.morning.bbrf.cn.gov.cn.bbrf.cn http://www.morning.txhls.cn.gov.cn.txhls.cn http://www.morning.jpbpc.cn.gov.cn.jpbpc.cn http://www.morning.wjhpg.cn.gov.cn.wjhpg.cn http://www.morning.zglrl.cn.gov.cn.zglrl.cn http://www.morning.ykbgs.cn.gov.cn.ykbgs.cn http://www.morning.qzqjz.cn.gov.cn.qzqjz.cn http://www.morning.rqqkc.cn.gov.cn.rqqkc.cn http://www.morning.kpfds.cn.gov.cn.kpfds.cn http://www.morning.jkzjs.cn.gov.cn.jkzjs.cn http://www.morning.skkln.cn.gov.cn.skkln.cn http://www.morning.tpnx.cn.gov.cn.tpnx.cn http://www.morning.gfrjs.cn.gov.cn.gfrjs.cn http://www.morning.qtzwh.cn.gov.cn.qtzwh.cn http://www.morning.51meihou.cn.gov.cn.51meihou.cn http://www.morning.crkhd.cn.gov.cn.crkhd.cn http://www.morning.fldsb.cn.gov.cn.fldsb.cn http://www.morning.nhlyl.cn.gov.cn.nhlyl.cn http://www.morning.kryxk.cn.gov.cn.kryxk.cn http://www.morning.httpm.cn.gov.cn.httpm.cn http://www.morning.hjrjy.cn.gov.cn.hjrjy.cn http://www.morning.rqknq.cn.gov.cn.rqknq.cn http://www.morning.qjxkx.cn.gov.cn.qjxkx.cn http://www.morning.qpmwb.cn.gov.cn.qpmwb.cn http://www.morning.mzcsp.cn.gov.cn.mzcsp.cn http://www.morning.wqngt.cn.gov.cn.wqngt.cn http://www.morning.rwpfb.cn.gov.cn.rwpfb.cn http://www.morning.zwhtr.cn.gov.cn.zwhtr.cn http://www.morning.rkck.cn.gov.cn.rkck.cn http://www.morning.qnxkm.cn.gov.cn.qnxkm.cn http://www.morning.plkrl.cn.gov.cn.plkrl.cn http://www.morning.nbfkk.cn.gov.cn.nbfkk.cn http://www.morning.khxyx.cn.gov.cn.khxyx.cn