依赖注入中不同键策略的分析与应用
1. 字符串键的局限性
在依赖注入的配置中,字符串键存在诸多问题。当考虑到人为错误时,字符串键的问题就更加明显。例如,一个常见名字的拼写可能有多种方式:
- Alan
- Allan
- Alain
- Allen
- Allun(爱尔兰变体)
即使是这样简短的名字,在英语世界中我们都难以就拼写达成一致。打字错误和误读会加剧这个问题。在有大量服务通过许多相似外观(和发音)的键来标识的情况下,情况很容易失控。一个拼写错误且无法映射到有效服务的键,可能在程序运行到后期才被发现。
此外,如果你使用像 Java 这样的静态类型语言,这是一个糟糕的选择。这类语言本应在编译时保证类型的有效性,理想情况下,我们不应该等到运行时才检测键绑定中的问题。
虽然像 IDE 或构建代理这样的工具可以在编译期间或之前帮助进行额外的检查,例如 IntelliJ IDEA 为 Spring 提供了相关插件,但任何工具在不启动注入器并检查每个绑定对象的情况下,都很难保证依赖项的正确解析。因此,使用字符串键的注入器经常会出现这个问题。
静态和动态类型方面,类型是编程语言中特定的数据类。例如,数字 32 是 Integer 类型。类型也可以是用户定义的,如 Car 或 Song。在对数据进行操作之前,必须确定数据的特定类型,这称为类型解析。动态类型语言在执行操作时解析类型,而静态类型语言在定义操作时(通常但不一定是在编译时)解析类型。
在注入器配置中,如果只有字符串键,就无法确定绑定的类型。例如,以下是一个游戏控制台(Nintendo Wii)和要在其上玩的游戏的配置: <
超级会员免费看
订阅专栏 解锁全文
170万+

被折叠的 条评论
为什么被折叠?



