使用XML做为配置文件在Java开发常见的模式,如spring,struts等,一大堆xml,最初使用的时候,感觉还好,因为大家都那样用的,就跟着用呗,肯定有好处。但现在开发多了,越来越觉得使用XML的配置相当臃肿,越看越烦。
注解(annoation)是JDK5.0的一个重要feature,虽然有所了解,他们基本上没有使用过,其最主要的一个原因就是没有想到使用注解有什么好处。
最近做了一个proxy工具,通过httpclient模拟用户提交,并且用于处理HTML元素,可以对某个元素删除、添加和修改。始终可以让用户在这个proxy站点内。
在设计上最重要的一个思考:
不修改目标应用的代码,就可以实现以上对元素处理的功能。
所以,第一个反应用XML来描述一个元素,比如说:
<div class="a">
<p>hello world</p>
</div
如果要删除这个元素,则是类似于下面一个流程:
1、定位到这个页面,通过URL
2、定位到这个结点,tag为div,class=a
3、动作为删除
这个例子看起来很简单,但是在实际运用中发现有两个问题
1、有很多同样的div(tag名字相同,属性值相同),实际上是很难定位到这个结点的。通常还是需要在这个div外面再套一个tag用来标识这个结点的唯一性。
2、描述文件会很冗长。在实际应用中,就是替换页头和页脚,删除其中几个段落,结果写出来的文件达到8k
仔细思考后第一次感觉,这个用注解来代替xml描述就会非常简单,如上面那个例子,则可以简单的如下描述
<!--Remove-->
<div class="a">
<p>hello world</p>
</div
是不是发现这样很简单了许多,而且还可以随便修改页面,不需要重新启动就可以让发动生效。
而最早的设计考虑不修改应用的代码,其实在实际应用中是非常困难的,从这一点也可以看出来,在架构设计中,实际的需求是相当重要的。另一个就是对于二八原则的理解,抓住大部分需求就行了。
总结:
对于需要从外部描述一个系统,这种场景用xml等配置文件是最合适的了
如果能从内部很简单的描述一个系统,那这个时候最好选择注解,可以减少对目标系统的描述。
不过杯具的就是要写一个注解的解析器,以达到配置处理的要求。
分享到:
相关推荐
SpringBoot核心配置与注解
hibernate注解配置
Swagger的相关配置与注解的使用
linux 2.6内核配置选项注解 linux 2.6内核配置选项注解 linux 2.6内核配置选项注解 linux 2.6内核配置选项注解
首先,我们从应用启动类与配置入手,详细解析了@PropertySource和@EnableDubbo两个重要注解的作用和实现方式。然后,我们深入研究了@EnableDubboConfig和@DubboComponentScan两个核心注解,详细解读了它们在Spring...
hibernate5官方文档样例代码包括配置与注解两个方案
深入理解Spring与Dubbo整合原理与源码分析:从启动类配置到注解解析
通过注解配置完全代替web.xml、Spring的xml文件配置,jquery递归遍历后台返回的json对象并进行拼接
让我们更好的了解 spring mvc 注解方面的知识 适合入门
springboot与mybatis集成,注解版与配置版,下载可运行。集成过程可参考博客https://blog.csdn.net/m0_37984249/article/details/80923212
Struts 2使用注解配置Action,不配置struts.xml,通过注解直接配置action
springMVC配置、注解、列子
都被它莫名其妙的错误搞的郁闷,而网上关于这方面的东西大多都是基于struts2.0版本的,对我们现在用的2.1以上的版本不起什么作用,所以特整理出一份文档,里面详细说明了怎样用注解出配置struts2的action,...
Spring MVC 全注解配置,吾运行环境:server tomcat8,elcipse,jdk1.8. 注:任何服务器必须是servlet是3.0以上的,否则不能运行,当然也有解决办法,自己百度吧
关于ssh的注解配置,通过学习此文档,了解ssh的配置问题
struts2+hibernate+spring很详细的全注解资源配置
使用注解形式的配置实现spring framework注入
14-Servlet注解以及IDEA与tomcat相关配置.pdf
使用注解配置Action示例。里面已经包涵java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils错误异常的解决方案。
ssh2注解配置,全部是注解配置,struts2和hibernate3和spring2.5全部是注解配置,,访问路径为http://localhost:8080/mytest/student/findAll.action