原文作者:JavaSpring高级进阶
原文链接:https://www.toutiao.com/i6715734748435579399/
欢迎关注专栏:Java架构技术进阶。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。 微信公众号:慕容千语的架构笔记。欢迎关注一起进步。
lison:复旦大学工程硕士,专注技术十年,产品控、代码控,拥有丰富的项目经验,主持研发了多个成功上线的大型互联网项目。热爱互联网,热衷于各种web技术,精通JAVA、J2EE和前端开发,擅长互联网高并发、高可靠架构设计,有丰富的实战经验。愿意和他人分享自己对技术的理解和感悟,讲课逻辑清晰,生动幽默。
什么是臃肿的代码
臃肿代码表征
- 业务代码与技术代码耦合
- 主业务和增值业务代码耦合
- 多余的依赖关系
带来的问题
- 可读性差
- 可复用性差
- 可维护性差
- 易变更性差
- 运行期依赖
关于注解的那些事
什么是注解?
注解(annotation):元数据,一种代码级别的说明;简单的说,注解如同一张标签;
- 解读一:注解是一个携带数据的附属品;
- 解读二:在特定的场景由外部解析产生作用
比如说王思聪他的标签就是:
通过代码了解注解的本质
关于注解的定义 — 元注解
1,@Documented –注解是否将包含在JavaDoc中
2,@Retention –什么时候使用该注解
可选值为:source、class、runtime,
3,@Target – 注解用于什么地方
- TYPE:表示可以用来修饰类、接口、注解类型或枚举类型;
- PACKAGE:可以用来修饰包;
- PARAMETER:可以用来修饰参数;
- ANNOTATION_TYPE:可以用来修饰注解类型;
- METHOD:可以用来修饰方法;
- FIELD:可以用来修饰属性(包括枚举常量);
- CONSTRUCTOR:可以用来修饰构造器;
- LOCAL_VARIABLE:可用来修饰局部变量
4,@Inherited – 是否允许子类继承该注解
关于注解的解析
要获取类方法和字段的注解信息,必须通过Java的反射技术来获取 Annotation对象,因为你除此之外没有别的获取注解对象的方法;
谈到这里大家就得思考一个问题
阿里面试问题:对于一个http请求,为什么Spring MVC 能准确的找到对应controller的某个方法进行处理?
臃肿代码美容手术的设计原则是什么?
单一职责原则:一个类或者一个接口只负责唯一项职责,尽量设计出功能单一的接口;
技术方案:Spring AOP增强 + 自定义注解
现学现用让代码妙笔生花
- 创建自定义的注解
- 将注解加在需要简化的方法上
- 增加配置,编写切面类
- 简化业务代码
- 运行代码进行验证
EL表达式解析过程
阶段知识点复盘
- 认识到丑陋代码的特征以及危害性;
- 耦合的本质;
- 注解的本质;
- Spring MVC源码部分解读;
- 优雅系统的设计原则,单一职责原则;
- 自定义注解结合AOP,对代码进行解耦
Java面试核心笔记
Spring原理
微服务
由于篇幅限制,还有关于Java基础、JVM、Java多线程并发、Java集合、Netty、RabbitMQ、kafka、数据结构、算法、数据库等就不一一展示了,如果对这份核心知识感兴趣的朋友,以及优雅代码对于一个架构师的重要性讲解这节视频的可以看关注转发后台私信回复关键词【代码】获取原视频讲解,需要Java面试核心知识点笔记的可以转发后后台私信回复关键词【笔记】领取原文件获取方式。
欢迎关注专栏:Java架构技术进阶。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。 微信公众号:慕容千语的架构笔记。欢迎关注一起进步。
网友评论