IT修真院·小课堂丨互联网职业小课堂在线学习平台

课堂课题:

什么是Annotation,怎么自定义Annotation,Annotation和XML的优缺点各是什么?

关联任务:

任务五

直播时间:

2019-07-03 15:30:00


课堂内容:

视频链接:

PPT链接:

提交按钮:

小课堂内容格式


标题:

【修真院xx(职业)小课堂】课题名称

开场语:

大家好,我是IT修真院XX分院第X期的学员XX,一枚正直纯洁善良的XX程序员,今天给大家分享一下,修真院官网XX(职业)任务X,深度思考中的知识点——XXX

(1)背景介绍:

背景介绍的时候,尽可能的要宽广,讲清楚来龙去脉,讲清楚为什么会需要这个技术。

(2)知识剖析:

讲知识点的时候,尽可能的成体系,学会成体系的去给别人介绍知识。现在很多做的都是零散的,没有分类。

(3)常见问题:

最少列出1个常见问题。

(4)解决方案:

写清楚常见问题的解决方案。

(5)编码实战:

尽可能的去寻找在真实项目中在用的。如果你能找到某个网站在用你说的知识点,这是最好的。学以致用,否则当成练习题就没有意义了。多准备一些demo,讲解过程中将知识点和demo结合,便于大家理解所讲解的知识点。

(6)拓展思考:

知识点之外的拓展思考,由分享人进行讲解,这些东西就是所谓的深度,也是一个人技术水准高低比较的表现。

(7)参考文献:

引入参加文献的时候,在引用的句子后面加上序号【1】。参考文献中列出详细来源。不要去抄别人的东西,这是一个基本的态度。

(8)更多讨论:

Q1:提问人:问题?
A1:回答人(可以是分享人,也可以是其他学员):回答
Q2:提问人:问题?
A2:回答人(可以是分享人,也可以是其他学员):回答
Q3:提问人:问题?
A3:回答人(可以是分享人,也可以是其他学员):回答

(9)鸣谢:

感谢XX、XX师兄,此教程是在他们之前技术分享的基础上完善而成。

(10)结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

什么是Annotation,怎么自定义Annotation,Annotation和XML的优缺点各是什么?    

辅导师兄


【修真院Java小课堂】

 

    大家好,我是IT修真院武汉分院第18期的学员徐海鹏,一枚正直纯洁善良的Java程序员,今天给大家分享一下,修真院官网java任务七,深度思考中的知识点——什么是Annotation,怎么自定义Annotation,Annotation和XML的优缺点各是什么?


(1)背景介绍:

在编程中,一直强调的一点就是注释的编写,注释的规范等等。尤其是越是核心,程序越复杂,逻辑越多的情况下, 注释的编写对我们以后的阅读代码,维护软件起着至关重要的作用。 一款软件有着好的注释, 相当于一个中国人阅读一篇带着汉语翻译的英文文章,其阅读速度是事半功倍的效果。 但是今天想要总结的却不是代码中的注释需要注意的问题,而是JDK5.0以后提供的一种新特性。

(2)知识剖析:

Annotation开发介绍:

    Annotation(注解),其实就是对类,方法,属性进行的一种标示,一种注释(注意,这个里注释不是为了让我们开发或维护人员阅读更方便,而是为了给JVM看的), 通过这些标示,Java虚拟机可以完成这些标示对应的功能。例如使用框架开发时,我们都是通过配置文件进行对象关系组合映射等功能, 而通过注解我们可以完全代替配置文件的编写。

Annotation的作用:

  编写文档:通过代码里标识的元数据生成文档。

  代码分析:通过代码里标识的元数据对代码进行分析。

  编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查。

JDK内置的几个常用注解:

    @Override:此注解能够实现编译时检查,当某方法前边添加此注解时,表示此方法为重写父类中的方法。

如果此方法不是父类的方法,例如我们本来想重写toString呢,却写成了tostring,则编译无法通过,会提示错误。

    @Deprecated:此注解是对不应该,或者将要淘汰的方法进行标识,当编程人员使用时就会给予提示。

    @SuppressWarnings:此注解表示去除一些警告,但是里边需要我们制定参数

Spring注解开发

    Spring框架的核心功能IoC(Inversion of Control),也就是通过Spring容器进行对象的管理,以及对象之间组合关系的映射。 通常情况下我们会在xml配置文件中进行action,service,dao等层的声明,然后并告知框架我们想要的注入方式, 然后在类中声明要组合类的get,set方法。而通过Spring框架中注解的运用也就主要是解决这类问题的。 而框架中另一个核心知识AOP,一种面向横切面的方法编程,在程序中一般都是进行一次设置就可以的,所以都还放在配置文件中。 例如声明式事物的设置,一次设置,后边就不用管了,所以这个没有必要使用注解进行简化。

    1、首先需要在配置文件中增加命名空间的和约束文件

    2、开启Spring的注解功能,这样Spring环境才会进行指定位置的扫描,进行类之间的关联组合

    3、声明注解类,让Spring框架可以识别

类的分层注解,由于我们后台开发都是分为三层进行开发的,所以Spring框架提供了三种对于不同层的注解方式:

    ● 控制层:@Controller

    ● 服务层:@Service

    ● 持久层:@Repository

    默认情况下使用注解声明的Bean对象id名称为:类名称的首字母小写,一般不需要我们进行设置,如果想要设置时,例如我们指定的是实现类,而名字指向了接口,直接添加value属性即可,@Service(value="name"),当然value是可以省略的。

    Spring框架还为我们提供了代替上边三个分层注解的通用注解:@Component,当然提倡大家使用分层注解更好一些,区分层次比较明确。

自动装配功能的实现对象之间的组合关系,在属性前边指定下边的注解:

    ● @Autowired : 采用类型的方式完成自动装配 : byType

    ● @Resource : 采用名称+类型的方式完成自动装配 : byName +byType

    ● 另外Spring提供的两种注解的自动装配功能,属性不需要声明set,get方法也可以完成组合功能,这是非常方便的。

(3)常见问题:

   在开发中我们应该选择使用配置文件开发,还是使用注解开发?

   Annotation可以自定义么?如何定义?利于扩展。

(4)解决方案:

(1)注解开发的优缺点

    优点:1)开发速度快;2)编译期间容易发现错误的出处 。

    缺点:1)管理分散,基本每个类上都有;2)扩展功能时,没有遵循OCP开发原则。

(2)配置文件开发的优缺点

    优点:1)遵循OCP开发原则,修改配置文件即可进行功能扩展;2)集中管理对象和对象之间的组合关系,易于阅读。

    缺点:1)开发速度相对较慢;2)编译时很难检查出错误,运行中的错误很难定位,调试难度较大。

所以我们选择开发方式的时候:

  如果客户需求不会频繁发生变化。那么使用注解非常好,开发效率快。

  如果客户需求经常发生变化,那么采用配置文件的方式会好一些。有利于扩展。

(5)编码实战:

注解自定义

ElementTypeRetentionPolicyRetentionPolicy.ElementType.ElementType.ElementType.@

使用注解

[] args..isAnnotationPresent.annotation = ..getAnnotation...printlnannotation

(6)拓展思考:

1、注解的应用场景有哪些?

    生成文档:通过注解对接口,实体类中的字段进行描述生成可视化的文档

    代替配置文件:Spring中Bean的装载注入

    导出数据:可以写一个统一的导出工具类,传入一个List<实体类>进去即可导出Excel文件,Excel的表头可以用注解加载字段上


2、可以从注释方法声明返回哪些对象类型?

    返回类型必须是基本类型,String,Class,Enum或以前类型之一的数组。否则,编译器将抛出错误。


3、是否可以扩展注释?

    注释总是扩展java.lang.annotation.Annotation

(7)参考文献:

    参考一:http://blog.csdn.net/liujiahan629629/article/details/22325155

    参考二:http://blog.csdn.net/liujiahan629629/article/details/22696031

    参考三:https://www.cnblogs.com/xdp-gacl/p/3622275.html

(8)结束语:

        今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

评论

请您登录 后进行评论