Annotation的优缺点-和配置文件比较
2010-08-02 10:57
267 查看
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没有文档说明的时候,相当还容易理解一些
以上代码是假想
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没有文档说明的时候,相当还容易理解一些
以上代码是假想
相关文章推荐
- 软件设计风格 之 注解(Annotation)、配置文件、xml 的比较
- ArrayList 与HashSet的比较,及应用反射读取properties配置文件中的数据进行实例化再调用,以及类加载器的使用;还有HashCode的分析,及导致内存泄露,内存溢出的原因之一
- hibernate 支持配置文件和annotation两种方式
- Spring 在 xml配置文件或annotation注解中运用Spring EL
- 比较完整的Struts-config.xml配置文件
- Hibernate3.5.4---java application的xml和annotation环境搭建(hibernate.cfg.xml配置文件说明,映射文件Student.hbm.xml说明)
- 比较常用的Properties配置文件的使用方法示例
- 比较多台机器配置文件是否相同 remote_diff.sh
- spring配置文件中的<context:annotation-config/>
- annotation 简化spring的配置文件bean
- 配置文件Encoder.cfg中比较重要的几项
- JM配置文件Encoder.cfg中比较重要的几项
- Spring 在 xml配置文件 或 annotation 注解中 运用Spring EL
- springMVC配置文件spring-servlet.xml中<mvc:annotation-driven />的意义
- hibernate之利用配置文件和annotation往数据库里插入数据
- parse_ini_file解析ini配置文件的效率和直接require Array效率的比较
- Spring(1):配置文件(IOC)与Annotation的使用(上集)
- 一个比较全的的log4j配置文件(log4j.properties)转载
- spring配置文件比较全的约束
- Hibernate3.5.4---java application的xml和annotation环境搭建(hibernate.cfg.xml配置文件说明,映射文件Student.hbm.xml说明