xml 配置与基于注释的配置 [已关闭]
在我最近一直在研究的几个大型项目中,选择一个或另一个(XML或注释)似乎变得越来越重要。随着项目的发展,一致性对于可维护性非常重要。
我的问题是:基于 XML 的配置与基于注释的配置相比有哪些优势,基于注释的配置与基于 XML 的配置相比有哪些优势?
在我最近一直在研究的几个大型项目中,选择一个或另一个(XML或注释)似乎变得越来越重要。随着项目的发展,一致性对于可维护性非常重要。
我的问题是:基于 XML 的配置与基于注释的配置相比有哪些优势,基于注释的配置与基于 XML 的配置相比有哪些优势?
注释有其用途,但它们不是杀死XML配置的银弹。我建议将两者混合!
例如,如果使用Spring,则将XML用于应用程序的依赖注入部分是完全直观的。这使得代码的依赖关系远离将要使用它的代码,相比之下,在需要依赖关系的代码中使用某种注释会使代码意识到这种自动配置。
但是,与其使用 XML 进行事务性管理,不如使用注释将方法标记为事务性方法,这是程序员可能希望了解的信息。但是,接口将作为SubtypeY而不是SubtypeX注入不应该包含在类中,因为如果现在您希望注入SubtypeX,则必须更改代码,而您之前有一个接口契约,因此使用XML,您只需要更改XML映射,并且这样做相当快速和轻松。
我没有使用过JPA注释,所以我不知道它们有多好,但我认为在XML中将bean的映射保留到数据库也是好的,因为对象不应该关心它的信息来自哪里,它应该只关心它能用它的信息做什么。但是,如果你喜欢JPA(我对它没有任何经验),一定要去吧。
一般而言:如果注释提供功能并充当注释本身,并且不会将代码绑定到某个特定过程,以便在没有此注释的情况下正常运行,则进行注释。例如,标记为事务性的事务方法不会杀死其操作逻辑,并且还可以用作良好的代码级注释。否则,此信息可能最好表示为 XML,因为尽管它最终会影响代码的运行方式,但它不会更改代码的主要功能,因此不属于源文件。
这里有一个更广泛的问题,即外部化与内联元数据。如果你的对象模型只会以一种方式持久化,那么内联元数据(即注释)会更紧凑、更易读。
但是,如果对象模型在不同的应用程序中被重用,以至于每个应用程序都希望以不同的方式持久化模型,那么元数据的外部化(即.XML描述符)就变得更加合适。
两者都不是更好,因此都受支持,尽管注释更时尚。因此,像JPA这样的新框架往往会更加重视它们。更成熟的API,如原生Hibernate,提供两者,因为众所周知,这两者都不够。