尽管心里会感觉这是好货色, 但一旦应用就开始滑向了技术不通用的死亡深渊...
- the Cloak of Invisibility(隐身衣) ==> lombok(隐形加成)
- the Resurrection Stone(复活石) ==> mapstruct(高效映射)
- the Elder Wand(老魔杖) ==> vavr(链式攻打)
@code
- https://github.com/service-ja...
- https://github.com/service-ja...
Lombok
- 注解模式来简化打消臃肿Java代码
- @doc https://projectlombok.org/fea...
- @code https://github.com/rzwitserlo...
// @myself 2020-04-06以前谁不必Lombok, 我感觉谁是sb...当初我竟然开始厌弃Lombok这一类“乖僻”的工具了我可真是一个善变的男人 // IDEA要装置lombok插件@Setter@Getter@Data@Accessor(chain=true)@Builder@ToString -> 输入@Log(这是一个泛型注解,具体有很多种形式)@AllArgsConstructor@NoArgsConstructor@EqualsAndHashCode@NonNull@Cleanup@ToString@RequiredArgsConstructor@Value@SneakyThrows@Synchronized
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> <scope>provided</scope></dependency>
Teacher teacher = Teacher.builder().job("teacher").name("teacher").career("teach").build();Student student = new Student().setJob("student").setHobby("study").setName("student");Console.log(student);// teacher(source) -> student(target)BeanUtils.copyProperties(teacher, student);Console.log(student);
Lombok-实际 @demo
Lombok应用
- https://blog.csdn.net/motui/a...
Lombok-常见问题 @faq
- 常见问题
// lombok在IDEA 中配置有效 // IntelliJ IDEA 应用 lombok 缩小简短代码 @nice https://www.jianshu.com/p/f26d177b88be1) 装置plugins>lombok2) annotation process3) 重启idea @attention4) 将lombok.config 放在java目录下// lombok.accessors.chain=true===// @accessor(chain=true)生效@Getter@Setter@Accessors(chain = true)getter setter办法也用正文 不能被笼罩
- 继承上的坑?? @faq
然而如果只应用了@Data,而不应用@EqualsAndHashCode(callSuper=true)的话,会默认是@EqualsAndHashCode(callSuper=false),这时候生成的equals()办法只会比拟子类的属性,不会思考从父类继承的属性,无论父类属性拜访权限是否凋谢
mapstruct
- Java bean mappings
- @code https://github.com/mapstruct/...
- @doc https://mapstruct.org/
Dozer @old
- @code https://github.com/DozerMappe...
用来两个对象之间属性转换的工具 --> copyProperties ??要写xml??
Dozer-实际
Dozer的应用
- https://blog.csdn.net/lp84031...
VAVR
- lambda加强, 元组等
- @code https://github.com/vavr-io/vavr
VAVR-实际
VAVR:颠覆你的 Java 体验 @todo
- @blog https://blog.cc1234.cc/
- @doc https://juejin.im/post/5f1d57...
参考
大话后端开发的奇淫技巧大汇合 @nice @digest
- https://juejin.im/post/5b07c6...
- @blog https://github.com/SFLAQiu/we...
你真的会写Java吗? @nice
- @by https://github.com/lrwinx
- 聊聊clean code https://tech.meituan.com/clea...
- @doc https://juejin.im/entry/59ae0...
// IDEeclipse -> IDEA !!!// 命名com.xxx.domain -> com.xxx.entity// 工具应用lombokDTO转化的时候始终应用set进行属性赋值时, 应用浅拷贝办法?// 设计模式设计模式: 所有的模式并不是凭空想象进去的,都是基于重构// 业务业务驱动技术 > 技术驱动业务// 模式结对编程多回头看本人的代码勤于重构// 源码多看成熟框架的源码// UMLUML就是你谈话的语言类图时序图===// BeanUtils.copyPropertiespublic interface DTOConvert<S,T> { T convert(S s);}public class UserInputDTOConvert implements DTOConvert { @Override public User convert(UserInputDTO userInputDTO) { User user = new User(); BeanUtils.copyProperties(userInputDTO,user); return user; }}User user = new UserInputDTOConvert().convert(userInputDTO);