Пружинная электропроводка по типу
В Spring «Autowiring by Type» означает, что если тип данных компонента совместим с типом данных другого свойства компонента, автоматически подключайте его.
Например, компонент «person» предоставляет свойство с типом данных класса «Способность», Spring найдет компонент с тем же типом данных класса «способность» и автоматически подключит его. И если соответствия не найдено, просто ничего не делайте.
Вы можете включить эту функцию черезautowire="byType"
, как показано ниже:
Смотрите полный пример электропроводки Spring по типу.
1. Фасоль
Две бобы, человек и способности.
package com.example.common; public class Person { private Ability ability; //... }
package com.example.common; public class Ability { private String skill; //... }
2. Пружинная проводка
Обычно вы связываете бин явно:
Выход
Person [ability=Ability [skill=Invisible]]
Используяautowire by type enabled, вы можете не задавать свойство способности. Spring найдет тот же тип данных и подключит его автоматически.
Выход
Person [ability=Ability [skill=Invisible]]
Подождите, что если у вас есть два компонента с одним и тем же типом данных класса «способность»?
Выход
Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyException: ... No unique bean of type [com.example.common.Ability] is defined: expected single matching bean but found 2: [steal, invisible]; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.example.common.Ability] is defined: expected single matching bean but found 2: [steal, invisible]
В этом случае вы получите сообщение об ошибкеUnsatisfiedDependencyException
.
Note
В режиме автоматического подключения по типу вам просто нужно убедиться, что объявлен только один уникальный тип данных bean-компонента.
Скачать исходный код
Скачать -Spring-AutoWiring-by-Type-Example.zip (6 КБ)