Java 的那些框架曾经疯狂地使用 xml ,不用硬编码,但现在怎么又“去 xml 化”回归硬编码了?

发布时间:
2023-08-24 12:44
阅读量:
12

我记得 ssh 时代,xml 可以说是多到令人发指,Java EE 自己的 servlet 要使用 xml,各种框架也需要使用 xml。

那个时候很流行一个概念,叫低侵入性,Spring 就号称零侵入。也就是说,你可以完全不用修改你的代码,代码里没有任何 Spring 的东西,然后在 xml 里面配置,如果以后不用 Spring 了,完全可以换掉而不必修改源码。现实是,这很难实现,Spring 移除了,程序就不能跑了,找个框架来替换 Spring 几乎不可能,就算可以,又要配置一堆 xml,不同的框架 xml 配置肯定不通用,工作量高到让人绝望。只要是使用框架,侵入是无法避免的,现在 Spring 还是使用注解比较多,虽然官网文档里仍然会给 xml 配置代码,但是用的人很少了。xml 来实现低侵入性,徒增工作量。

那个时候还流行一个说法,叫不修改代码只修改配置,就是不要硬编码。假如你的程序需要一点点改动,那么你可以修改 xml 配置文件,不需要修改 Java 代码,就可以重启使用新的更改。这样做有什么好处呢?如果修改 Java 你要重新编译打包,打包完再上传服务器,直接在服务器上修改 xml 就方便多了。直接通过配置文件改变程序逻辑,比如通过 xml 配置修改 struts 的请求路径等信息,还是有一定的危险性的,程序封装好之后,内部的细节尽可能少暴露。如果真需要做各种修改,直接服务器上改程序逻辑,干脆用脚本语言好了。再加上现在流行容器化了,程序都是要发版的,大规模集群要自动化,这种改 xml 配置的就更少了。一般都是通过设置容器的环境变量来做配置, spring、struts 和 hibernate 配置与程序的逻辑有关,属于程序版本中的内容,不应该可以随意调整。

xml 这套东西确实是弯路,没有能经住时间的考验。现在的 Srping 这套注解配置不知道能不能经住考验,也许再过几年 ioc + aop 这套动态增强技术也会成被认为是弯路。

END