`

Annotation的优缺点-和配置文件比较

 
阅读更多

a. 配置(配置文件,config) 也是属于应用程序的一部分
b. 配置 可以认为是 程序 的一部分,也是程序(代码)
c. 配置作为程序的一部分,作用不是最大的
  按重要程度分,程序代码可以这样分级:

      核心代码
      非核心代码
      配置代码 ,配置(config)
      程序输入


解释如:
  核心代码,不说了,就是体现你竞争力的代码,比方说一个dbms的引擎
  非核心代码,主要是指配置管理模块的代码,比方说dbms 的管理工具
   比方说ui (当然有的程序,如网站,可能核心竞争力就在ui上,如ui很易用)
  配置文件,就是xx.conf xx.properties xx.prop 文件
      它们也是程序的一部分
  程序输入,不用解释


 配置是程序的一部分,可以用配置文件的形式来表现
  也可以用代码的形式来表现,以前可能就是java类
如 XXConfig 的类,现在可能就是 annotation
        
为什么配置要用 annotation?
用annotation比配置文件有啥好处?
什么时候用配置文件,什么时候用annotation?

简单说

为什么配置要用 annotation?
因为配置也是程序,也能用 程序来表示,当它更适合用程序来表示时
就不用配置文件了,就用 annotation了

用annotation比配置文件有啥好处?
annotation 和配置文件 各有什么优缺点,大致有:

配置文件 更容易编辑 用文本编辑器即可胜任,改了就行
anno在源代码里,可能要用ide,改了得编译,可能还要重新部署
配置文件的一个好处是很集中,要修改什么配置,打开这个配置文件即可
linux下的很多软件就是这样的
配置文件的一个缺点是太集中,有时候配置文件很长,较难修改
比方说apache的配置都在 httpd.conf中,改起来还是不直观
anno是分散在相关的class上的,改起来还是挺轻松的,更模块化
配置文件的表现力不如anno,anno可以用枚举,用class,常量定义等
如果有ide辅助,anno还有一定检查错误的效果,如拼写错误ide有提示
关于怎么读配置上,两者都不是问题,反正都得写代码
配置文件不论是 xml还是properties,比较成熟
apache commons configuration,还不错
anno是用反射,代码更直观,更不容易出错,不过代码写起来有一点难度
关于重载配置上,一般来说,配置修改后,用配置文件还是用 anno,都需要重启程序,anno设置需要重新编译。但是通过特殊的手段,两者都可以实现不重启应用而重新载入配置的需求,用配置文件这个需求很容易实现,用anno有很大难度
可读性上,anno比配置文件强很多。尤其在缺乏文档的时候,配置文件的配置项几乎很难知道是干啥用的

什么时候用配置文件,什么时候用annotation?
考虑下面几条建议:

a. 如果要求不停止程序,修改配置文件就能生效。
    那务必选择配置文件,不用 anno

b. 如果 配置是和某个具体的东东相关联的,最好用 anno
  举例来说(反面的):
  我认为 web.xml 用  anno  更适合,用xml的样子:
<servlet>
  <servlet-name>xxx</
  <servlet-class>xx.xx<
</servlet>
<servlet-mapping>
  <servlet-name>xx
  <pattern>....

用anno
  
@Servlet(url="/abc/*")
public class MyServlet extends ....

c. 如果配置在生产环境中修改比较多,用配置文件
    如果在开发环境中修改很多,运行环境中不会修改,用anno
举个例子,你写了一个模式识别的程序,可以配置各种参数
把参数配置好后,用在生产环境中时,就不会修改参数了
那么用anno更好些

d. 无法用anno,当然不要尝试用anno了,如你还在用jdk1.4

e. 性能要求很高的地方,优先考虑配置文件

f. 团队合作中,优先考虑 anno
     配置文件没有文章说明的话,是很难理解的
     anno没有文档说明的时候,相当还容易理解一些

 

以上代码是假想

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics