`

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没有文档说明的时候,相当还容易理解一些

 

以上代码是假想

分享到:
评论

相关推荐

    xml和annotation的优缺点

    传统的XML配置文件和新兴的Java Annotation配置方式各有千秋,它们在实际应用中展现出不同的优势与局限性。本文将详细探讨这两种配置方式的优缺点,并结合具体场景进行对比分析。 #### 二、XML配置的优缺点 **优点...

    struts2 interceptor annotation plugin

    而"struts2 interceptor annotation plugin"则是Struts2框架提供的一种使用注解来配置拦截器的方式,这种方式更加简洁、直观,减少了XML配置文件的复杂性。 注解(Annotation)是Java编程语言的一个重要特性,它...

    Spring事务配置的五种方式

    Spring 事务管理是其核心特性之一,用于确保在执行数据库操作时的一致性和...理解每种方式的工作原理和优缺点,可以帮助你更好地进行事务配置。Spring 的事务管理机制确保了数据的一致性,是构建企业级应用的重要基石。

    corejava 面试题

    Annotation与XML配置文件相比,具有以下优缺点: - Annotation与代码紧密集成,便于维护,且在运行时可访问,而XML配置文件可能导致一致性问题,需要单独处理。 - Annotation是类型安全的,编译器会检查其正确性,...

    IDEA用maven创建springMVC项目和配置(XML配置和Java配置)

    在Spring MVC项目中,XML配置和Java配置各有优缺点。XML配置清晰明了,易于阅读和维护,但可能会导致大量的XML文件。相比之下,Java配置更加简洁,易于整合,且能利用Java的强大功能,如类型安全和代码提示,但它...

    spring基于task标签和通过xml配置实现任务的区别

    你可以在Spring配置文件中直接声明`&lt;task:annotation-driven/&gt;`来启用对`@Scheduled`注解的支持。 - 使用`@Scheduled`注解,可以直接在方法上定义调度规则,如cron表达式或固定延迟,使得任务代码和配置更加紧密...

    Spring_Mvc

    虽然题目中提到了SSH,但Spring MVC和Struts2是两种不同的MVC框架,它们有各自的优缺点。Spring MVC更注重依赖注入和面向切面编程,而Struts2则强调Action和Result的配置。如果需要在同一个项目中集成Spring MVC和...

    mybatis学习总结:annotation示例改进

    9. **注解的优缺点**:注解使得代码更加简洁,易于理解和维护,但大型项目中如果过度依赖注解可能导致类文件过大,影响性能。因此,在实际使用中需要根据项目规模和需求进行选择。 通过上述讲解,我们可以看出...

    spring3.0两种事务管理配置

    这种方法只需要在 Spring 配置文件中定义一个事务管理对象(如 DataSourceTransactionManager),然后加入 `&lt;tx:annotation-driven/&gt;` 节点,引用该事务管理对象,然后即可在需要进行事务处理的类和方法使用 `@...

    Spring的事务配置的五种方式

    每种方式都有其适用场景和优缺点,例如基于注解的配置简单直观,但可能引入额外的运行时开销;而编程式事务管理则提供了更高的灵活性,但增加了代码的复杂性。在实际应用中,应根据项目需求和性能考虑选择合适的事务...

    spring-aop-aspectj-case

    - **&lt;aop:aspectj-autoproxy/&gt;**:在Spring配置文件中启用AspectJ自动代理。 4. **实际应用示例**: - 日志记录:通过切面记录方法的调用时间、参数等信息。 - 事务管理:利用AOP进行数据库事务的开启、提交、...

    spring-scheduled

    要使用XML配置实现定时任务,你需要在Spring的配置文件中引入`*&gt;`命名空间。例如: ```xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" ...

    spring笔记

    Spring 是 Java 企业版(Java EE)应用程序的框架,提供了结构化的配置文件,实现了控制反转(IoC)和面向切面编程(AOP),支持表现层、业务逻辑层和持久层。Spring 的核心是 IoC 和 AOP,能够与主流的第三方框架...

    JAVA-hibernate笔记

    - **重Annotation,轻xml配置文件** 注解在现代Java开发中越来越普遍,理解如何使用注解替代XML配置,可以使代码更加简洁。 **资源** - **http://www.hibernate.org** Hibernate的官方网站,提供最新版本、文档...

    java web 开发详解

     优点: 不需要书写XML配置文件 良好的学习文档 社区成员很热心 缺点: 社区比较小 不如其他的项目活跃 ActionBean里面的URL是硬编码的 Struts 2  优点: 架构简单——易于扩展 标记库很容易利用FreeMarker或者...

    Hibernate学习笔记

    - **配置文件**:`hibernate.cfg.xml`是Hibernate的核心配置文件,用于指定连接数据库的信息、日志级别、自动创建或更新数据库表等设置。 - **图形化客户端**:推荐使用如MySQL Workbench等工具,便于数据库的设计和...

    Spring事务配置

    在`Spring_Transaction`这个压缩包中,可能包含了示例代码或者配置文件,可以帮助你理解和实践Spring的事务管理。通过深入学习和实践这些内容,你可以更好地掌握Spring框架的事务管理特性,从而提高应用的稳定性和...

    精通 EJB3.0

    - **注解驱动(Annotation-Based)**: EJB3.0引入了大量的注解,如`@Entity`、`@Stateless`、`@Stateful`、`@MessageDriven`等,使得开发者无需编写XML配置文件即可声明bean的行为和持久化信息。 - **实体Bean的...

Global site tag (gtag.js) - Google Analytics