作者:
江南白衣
1.因为两者的用途不同,所以Annotation与XML应该并存
Anootation vs XML 到了现在,在Spring和EJB3各占一边的持续演示下,各自的用途已清晰。
虽然两者之间完全可以相互替代,没有绝对不能做的事情,但却存在好不好的问题,两者的用途不同,应该并用:
"size=10,db_user=ito"这样的参数,仍然适合放在XML,YAML(ruby),properties,ini文件里。
而Annotation中所放,是真正程序的一部分,是旧编程体系中所缺的那一块东西。
看看编程语言的发展:
一开始只是函数的封装;
到了OO语言,对象有了自己的属性和方法;
到了框架满天飞的年代,这些属性和方法又有了自己的属性,来告诉框架如何为自己提供服务。比如Spring和EJB3,POJO就用配置信息来告诉框架无侵入的提供服务。整个进化的过程非常自然。
因为这些信息本来就是程序的一部分,所以应该仍然放在Code里头,Spring把它割裂到XML明显影响了代码的阅读。
2.Anotation/XML PK Interface,Spring 无侵入性的基础
切尔斯基的Blog讲了Annotation/XML 对Interface的PK。这次PK,也可以认为是Spring 对 EJB2.1在框架无侵入性上的一次PK。
在EJB2.1时代,POJO必须通过接口来向框架声明一些东西,这就造成了框架的侵入性,强迫POJO实现一堆接口。而Spring,把这些元信息搬到了XML配置文件。
在Spring里随便就可以举个例子。比如一个POJO,在Spring为它进行依赖注入A和B后,需要根据A和B来装配一个内部属性C,这样就需要再跑一个init()函数。Spring提供两种方式,一种侵入性的,实现InitializingBean接口的afterPropertiesSet()函数供Spring调用。 而另一种是无侵入性的,在Bean的xml节点里面自行定义init函数的名字。
3.Annotation目前的弱点
一是Hibernate、Struts、三姑妈、四姨婆的annotation如果一股脑儿的全堆在可怜的POJO上很没人道,如果三姑六婆都抢Transation这个Anontation就更惨了。
二是annoation的表达能力有限,不如XML的强。
4.JSR250 - Common Annotations for the Java
Final Draft已经发布,八卦回来一看,也只是多定义了几个Common Annotation而已。
1.Generated 自动生成的代码要用此声明,而且必须说明工具的名称,如@Generated(“com.sun.xml.rpc.AProcessor”)
2.
Resource/Resources 就是EJB3里面用的资源引用。
3.PostConstruct / PreDestroy 声明那些如题的函数。
还有一些安全方面的annotation,不关心。
文章:
Java下的框架编写(1)--序
Java下的框架编程(2)-对泛型的无聊用法和为擦拭法站台
Java下的框架编程(3)--关于反射的碎话
Java下的框架编程(4)--Annotation vs XML vs Interface 最新一Round
Java下的框架编程(5)--cglib应用
Java下的框架编程(6)--asm(待写)
分享到:
相关推荐
github链接链接:https://github.com/springzfx/point-cloud-annotation-tool 在windows平台编译完成后的exe和dll文件,可以直接打开使用,并对原项目进行了优化,增加了列表和标注文件的显示功能,标注起来更快,...
"point-cloud-annotation-tool" 提供了一种便捷的界面,使得非专业用户也能高效地进行点云注解。 2. Windows 10环境下的运行: 在Windows 10环境下,该工具的使用非常简单。首先,下载提供的压缩包"pcd_annotation...
mybatis-plus-annotation.jar MP 注解 jar 包 mybatis-plus 的注解 jar 包,包含了 mybatis-plus 注解功能 各个版本
mybatis-plus-annotation-3.4.0.jar
mybatis-plus-annotation.jar MP 注解 jar 包 mybatis-plus 的注解 jar 包,包含了 mybatis-plus 注解功能 各个版本
赠送jar包:mybatis-plus-annotation-3.2.0.jar; 赠送原API文档:mybatis-plus-annotation-3.2.0-javadoc.jar; 赠送源代码:mybatis-plus-annotation-3.2.0-sources.jar; 赠送Maven依赖信息文件:mybatis-plus-...
在描述中提到的"mybatis-generator-core-chinese-annotation-1.3.5-master.zip"是一个包含MBG中文注解版1.3.5版本的压缩包,旨在帮助开发者更方便地理解和使用这个工具。 MBG的核心功能在于根据数据库表自动生成...
赠送jar包:mybatis-plus-annotation-3.5.1.jar; 赠送原API文档:mybatis-plus-annotation-3.5.1-javadoc.jar; 赠送源代码:mybatis-plus-annotation-3.5.1-sources.jar; 赠送Maven依赖信息文件:mybatis-plus-...
赠送jar包:mybatis-plus-annotation-3.1.0.jar; 赠送原API文档:mybatis-plus-annotation-3.1.0-javadoc.jar; 赠送源代码:mybatis-plus-annotation-3.1.0-sources.jar; 赠送Maven依赖信息文件:mybatis-plus-...
赠送jar包:mybatis-plus-annotation-3.5.1.jar; 赠送原API文档:mybatis-plus-annotation-3.5.1-javadoc.jar; 赠送源代码:mybatis-plus-annotation-3.5.1-sources.jar; 赠送Maven依赖信息文件:mybatis-plus-...
赠送jar包:mybatis-plus-annotation-3.1.0.jar; 赠送原API文档:mybatis-plus-annotation-3.1.0-javadoc.jar; 赠送源代码:mybatis-plus-annotation-3.1.0-sources.jar; 赠送Maven依赖信息文件:mybatis-plus-...
Hibernate Validator 是一个流行的开源验证框架,它基于JSR 303/JSR 349(Bean Validation)标准,为Java应用程序提供了强大的数据验证功能。"Hibernate Validator Annotation Processor 5.1.0.CR1"是该框架的一个...
Java API(Application Programming Interface)是Java开发平台的核心组成部分,它为开发者提供了丰富的类库和接口,使得编写Java程序变得更加高效和便捷。这个压缩包“JAVA 编程 API基础 JAVA开发平台,JAVA编程...
`girder-large-image-annotation`库是基于`girder`框架的一个扩展,主要服务于大型图像的管理和分析。`girder`是一个开源的、基于Web的平台,用于组织、存储和共享大量科学数据。该库的版本为1.8.7.dev3,这表明它...
Java面向对象(高级)-- 注解(Annotation)
官方版本,亲测可用
This tutorial show how to use Hibernate/JPA Named Queries. We start by explaining why we would use ... Next, we show an example of how to use named queries, either with annotations or XML configuration.
尚硅谷康师傅java学习...2020-4-10 java 注解(Annotation) 2020-4-11 Java 集合 2020-4-15 java 泛型 2020-4-18 java IO流 2020-4-19 java 网络编程 2020-4-21 java反射 2020-4-22 java8 新特性 2020-4-27 单元测试
官方版本,亲测可用
其中,Annotation(注解)系统是Java 5.0的一个核心新特性,它为元数据提供了强大的支持,使得编译器、JVM以及各种工具能够更加智能地处理代码。 一、什么是注解 注解是一种在源代码中添加元数据的方式,它允许...