Beans Auto-Wiring
您已经学习了如何使用元素声明bean,并使用XML配置文件中的和元素注入。
Spring容器可以在不使用“constructor-arg”和“property”元素的情况下autowire连接协作bean之间的关系,这有助于减少为大型基于Spring的应用程序编写的XML配置量。
自动装配模式
以下是自动装配模式,可用于指示Spring容器使用自动装配进行依赖注入。 您可以使用元素的autowire属性为bean定义指定autowire模式。
Sr.No | 模式和说明 |
---|---|
1 | no 这是默认设置,这意味着没有自动装配,您应该使用显式bean引用进行连接。 你对这种布线没什么特别的。 这是您在依赖注入章节中已经看到的内容。 |
2 | byName 按属性名称自动装配。 Spring容器在XML配置文件中byName autowire属性设置为byName autowire属性。 然后,它尝试匹配并将其属性与配置文件中由相同名称定义的bean相连。 |
3 | byType 按属性数据类型自动装配。 Spring容器在XML配置文件中查看autowire属性设置为byType autowire属性。 然后,如果属性的type与配置文件中的一个bean名称匹配,则会尝试匹配并连接属性。 如果存在多个这样的bean,则抛出致命异常。 |
4 | constructor 与byType类似,但type适用于构造函数参数。 如果容器中没有构造函数参数类型的一个bean,则会引发致命错误。 |
5 | autodetect Spring首先尝试通过constructor使用autowire连接,如果它不起作用,Spring会尝试通过byType自动装配。 |
您可以使用byType或constructor自动装配模式连接数组和其他类型集合。
自动装配的限制
自动装配在项目中一致使用时效果最佳。 如果一般不使用自动装配,那么开发人员使用它来连接一个或两个bean定义可能会让人感到困惑。 但是,自动装配可以显着减少指定属性或构造函数参数的需要,但在使用之前应考虑自动装配的限制和缺点。
Sr.No. | 限制和描述 |
---|---|
1 | Overriding possibility 您仍然可以使用和设置指定依赖项,这些设置将始终覆盖自动装配。 |
2 | Primitive data types 您无法自动装配所谓的简单属性,例如基元,字符串和类。 |
3 | Confusing nature 自动装配不如显式布线精确,因此如果可能,请使用明确的布线。 |