Java下的框架编程(4)--Annotation vs XML vs Interface 最新一Round
来源:互联网 发布:mac推荐医学app 编辑:程序博客网 时间:2024/06/05 07:12
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下的框架编程(4)--Annotation vs XML vs Interface 最新一Round
- Java下的框架编程(4)--Annotation vs XML vs Interface 最新一Round
- Java下的框架编程(4)--Annotation vs XML vs Interface 最新一Round
- Annotation VS. XML VS. interface
- Java下的Framework编写(4)--Annotation vs XML
- Annotation vs Interface
- java abstract vs interface
- java interface VS abstract
- 侵入,无侵入? Annotation vs Interface
- 侵入,无侵入? Annotation vs Interface
- 侵入,无侵入? Annotation vs Interface
- spring配置: Annotation vs XML
- Spring进行Bean配置的方式:Annotation VS Xml
- java interface vs abstract class
- Java abstract class vs interface
- java abstract class vs interface
- vs.net环境下的C++编程
- interface VS abstract class in java
- 架构师09年书单
- 习题3.2:不调用fcntl函数来实现dup2的功能
- 婚外情就象瘟疫一样
- Java下的框架编程(反射,泛型,元数据,CGLib,代码动态生成,AOP,动态语言嵌入)(1)--序
- 中国股民的四大优良品质
- Java下的框架编程(4)--Annotation vs XML vs Interface 最新一Round
- Java下的框架编程(5)--cglib的应用
- 我的电子书架IV
- 郁闷的十月和十一月,希望的十二月
- swing 好博文
- [双语阅读]美夫妇混入白宫蹭国宴
- override 与overload 的区别
- linux 与windows netstat命令查看端口是否占用
- 案例:小型企业邮件营销方法探讨