`
JavaSam
  • 浏览: 934815 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

配置文件和注解的优缺点

 
阅读更多

注释配置相对于 XML 配置具有很多的优势:

它 可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名、类型等信息,如果关系表字段和 PO 属性名、类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过 Java 反射机制获取。
注 释和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和 Java 代码放在一起,有助于增强程序的内聚性。而采用独立的 XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。
因此在很多情况下,注释配置比 XML 配置更受欢迎,注释配置有进一步流行的趋势。Spring 2.5 的一大增强就是引入了很多注释类,现在您已经可以使用注释配置完成大部分 XML 配置的功能。

注释配置和 XML 配置的适用场合
是否有了这些 IOC 注释,我们就可以完全摒除原来 XML 配置的方式呢?答案是否定的。有以下几点原因:
注 释配置不一定在先天上优于 XML 配置。如果 Bean 的依赖关系是固定的,(如 Service 使用了哪几个 DAO 类),这种配置信息不会在部署时发生调整,那么注释配置优于 XML 配置;反之如果这种依赖关系会在部署时发生调整,XML 配置显然又优于注释配置,因为注释是对 Java 源代码的调整,您需要重新改写源代码并重新编译才可以实施调整。
如果 Bean 不是自己编写的类(如 JdbcTemplate、SessionFactoryBean 等),注释配置将无法实施,此时 XML 配置是唯一可用的方式。
注释配置往往是类级别的,而 XML 配置则可以表现得更加灵活。比如相比于 @Transaction 事务注释,使用 aop/tx 命名空间的事务配置更加灵活和简单。
所 以在实现应用中,我们往往需要同时使用注释配置和 XML 配置,对于类级别且不会发生变动的配置可以优先考虑注释配置;而对于那些第三方类以及容易发生调整的配置则应优先考虑使用 XML 配置。Spring 会在具体实施 Bean 创建和 Bean 注入之前将这两种配置方式的元信息融合在一起。
小结
Spring 在 2.1 以后对注释配置提供了强力的支持,注释配置功能成为 Spring 2.5 的最大的亮点之一。合理地使用 Spring 2.5 的注释配置,可以有效减少配置的工作量,提高程序的内聚性。但是这并不意味着传统 XML 配置将走向消亡,在第三方类 Bean 的配置,以及那些诸如数据源、缓存池、持久层操作模板类、事务管理等内容的配置上,XML 配置依然拥有不可替代的地位
分享到:
评论

相关推荐

    Spring事务优缺点及使用详解.docx

    事务简介 二、程序举例环境搭建 ... Spring配置文件 o10. 测试 三、使用 Spring 的事务注解管理事务 o1. 声明事务管理器 o2. 开启注解驱动 o3. 完整Spring配置文件 o4. 业务层 public 方法加入事务属性 o5. 测试

    基础加强-源代码.rar

    关于配置文件与注解开发的优缺点: 注解优点:开发效率高 成本低 注解缺点:耦合性大 并且不利于后期维护 不同的注解只能在不同的位置使用(方法上、字段上、类上) 3.自定义注解(了解) 1)怎样去编写一个...

    Spring系列之Spring常用注解总结.docx

    传统的Spring做法是使用.xml文件来对bean进行注入或者是...为了解决这两个问题,Spring引入了注解,通过"@XXX"的方式,让注解与Java Bean紧密结合,既大大减少了配置文件的体积,又增加了Java Bean的可读性与内聚性。

    mysql数据库my.cnf配置文件

    当open_files_limit没有被配置的时候,比较max_connections*5和ulimit -n的值,哪个大用哪个, # 当open_file_limit被配置的时候,比较open_files_limit和max_connections*5的值,哪个大用哪个. table_open_cache = ...

    jeesite后台框架

    配置文件数据库密码及其它安全密钥自动加密。 所有请求参数获取,均通过XSS跨站脚本过滤方法。 乐观锁简单实现,必要情况下使用,提高数据安全性。 通过properties简单配置,限制是否允许JS跨域操作。 身份认证 a. ...

    springboot学习思维笔记.xmind

    SpringBoot的配置文件 application.properties application.yml src/main/resources starter pom 官方starter pom spring-boot-starter spring-boot-starter-actuator spring-...

    SpringBoot常见知识点.md

    - SpringBoot配置文件加载顺序 - SpringBoot 怎么切换生产环境和开发环境配置 - SpringBoot是如何推断应用类型和main的 <!-- /TOC --> SpringBoot常见知识点 什么是SpringBoot? SpringBoot是Spring开源组织...

    mybatis和mybatis plus比较详解

    MyBatis提供了定制化SQL、存储过程以及高级映射的支持,它要求开发者手动编写SQL语句,并使用注解或XML文件进行配置。相比之下,MyBatis Plus则提供了更为丰富的功能,如自动注入基本CRUD操作、强大的条件构造器、...

    structs程序设计从入门到精通word文档

    3.8struts简单例子的分析(含代码注释和配置文件说明) 9 3.9本章小结 10 第4章 配置STRUTS组件 10 4.1 Web 应用部署描述符 10 4.2 STRUTS配置文件 10 4.3 应用资源文件 10 4.4 ANT的构建文件 10 4.5 struts中的日志...

    Hibernate注释大全收藏

    通过@SequenceGenerator 和 @TableGenerator 可以配置不同的 identifier 生成器。 table="GENERATOR_TABLE" pk-column-name="key" value-column-name="hi" pk-column-value="EMP" allocation-size="20"/> //...

    Java高级程序设计实战教程第三章-Java反射机制.pptx

    应用程序通过读取配置文件来获取到指定名称的类的字节码文件并加载其中的内容进行调用,对一个类文件进行解剖,就可以取得任意一个已知名称的class的内部信息,包括其modifiers(诸如public,static等等)、...

    Spring Boot中文文档.rar

    配置文件特定的配置文件 26.记录 26.1.日志格式 26.2.控制台输出 26.2.1.彩色编码输出 26.3.文件输出 26.4.日志级别 26.5.日志组 26.6.自定义日志配置 26.7.Logback Extensions 26.7....

    rar压缩软件.rar

    Unix 版本的 RAR 从用户的 home 或 /etc 目录中的 .rarrc 文件读取配置文件信息 (存储在 HOME 环境变量中) Windows 的版本 RAR 从 rar.ini 文件读取配置文件信息,它放在 rar.exe 文件相 同的目录中。 这个...

    java注解源码级框架-orman:适用于Java/Android的轻量级和简约ORM。适用于SQLite和MySQL。(未积极维护)

    java注解源码级框架描述 ORMAN 是一个简约轻量级的 Java 框架,它可以处理您常见的数据库使用,而无需编写 ...配置文件等 简单易学 符合 SQL:1999 标准。 寻找贡献者一个正在开发的项目,需要在文档、测试、演示应

    java笔试题重复字符串-gocd-yaml-config-plugin:在YAML中声明GoCD管道和环境配置的插件

    配置文件中的注释 - YAML 支持注释,因此您可以解释为什么管道/环境是这样配置的。 目录 设置 第 1 步:比17.8.0更新的 GoCD 版本已经捆绑了插件。 你不需要安装任何东西。 如果您使用的 GoCD 版本早于 17.8.0 ,则...

    training-boot-scheduler:spring boot 集成调度程序作业

    boot-schedulerspring boot integrate scheduler job 该项目在Spring-Boot基础上整合了调度作业功能,演示了两种功能:注解配置使用配置文件XML这两种配置方式都有优势,如果需求固定,推荐使用注解,注解缺点就是...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    6.1.4 Spring Boot 的配置文件 140 6.1.5 starter pom 141 6.1.6 使用xml 配置 143 6.2 外部配置 143 6.2.1 命令行参数配置 143 6.2.2 常规属性配置 144 6.2.3 类型安全的配置(基于properties) 145 6.3 日志配置 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    6.1.4 Spring Boot 的配置文件 140 6.1.5 starter pom 141 6.1.6 使用xml 配置 143 6.2 外部配置 143 6.2.1 命令行参数配置 143 6.2.2 常规属性配置 144 6.2.3 类型安全的配置(基于properties) 145 6.3 日志配置 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    6.1.4 Spring Boot 的配置文件 140 6.1.5 starter pom 141 6.1.6 使用xml 配置 143 6.2 外部配置 143 6.2.1 命令行参数配置 143 6.2.2 常规属性配置 144 6.2.3 类型安全的配置(基于properties) 145 6.3 日志配置 ...

    vs code 配置C++环境变量方法(进阶版).zip (大佬们赏点积分吧)

    先建一个叫做.vscode的文件夹(放配置文件滴,源代码不要放进去,放进去会咋样我也不道啊) 然后在里面建4个一样名字的json文件,把我的代码放进去,然后,修改几处标出的地方就可以了 ### 注意 系统弹出的小黑窗...

Global site tag (gtag.js) - Google Analytics