Проверка зависимостей свойств Spring
В Spring вы можете использовать функцию проверки зависимостей, чтобы убедиться, что необходимые свойства были установлены или введены.
Режимы проверки зависимостей
Поддерживаются 4 режима проверки зависимостей:
-
none - нет проверки зависимостей.
-
просто - если какие-либо свойства типа примитива (int, long, double…) и типов коллекции (map, list ..) не были установлены, UnsatisfiedDependencyException будет выброшено.
-
объекты - если какие-либо свойства типа объекта не были установлены, будет выброшено исключение UnsatisfiedDependencyException.
-
all - Если какие-либо свойства любого типа не были установлены, будет выброшено исключение UnsatisfiedDependencyException
.
P.S The default mode is none
пример
Объект Customer и Person для демонстрации.
package com.example.common; public class Customer { private Person person; private int type; private String action; //getter and setter methods }
package com.example.common; public class Person { private String name; private String address; private int age; //getter and setter methods }
1. нет проверки зависимостей
Файл конфигурации Spring bean с режимом проверки зависимостей none.
Если вы явно не определили режим проверки зависимостей, по умолчанию используется значение «none». Проверка зависимостей не будет выполняться.
2. простая проверка зависимостей
Файл конфигурации Spring bean с «простым» режимом проверки зависимостей.
Свойство «тип» (примитивный тип или типы коллекций) не установлено, будет выданUnsatisfiedDependencyException.
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'CustomerBean' defined in class path resource [config/Spring-Customer.xml]: Unsatisfied dependency expressed through bean property 'type': Set this property value or disable dependency checking for this bean.
3. проверка зависимостей объектов
Файл конфигурации Spring bean с режимом проверки зависимостей «объектов».
Свойство «лицо» (тип объекта) не установлено, будет выданUnsatisfiedDependencyException.
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'CustomerBean' defined in class path resource [config/Spring-Customer.xml]: Unsatisfied dependency expressed through bean property 'person': Set this property value or disable dependency checking for this bean.
4. проверка всех зависимостей
Файл конфигурации Spring bean с режимом проверки зависимостей all.
Комбинация "простого" и "объектного" режима, если какие-либо свойства любого типа (примитив, коллекция и объект) не были установлены, будет выданUnsatisfiedDependencyException.
Глобальная проверка зависимостей по умолчанию
Явное определение режима проверки зависимостей для каждого bean-компонента является утомительным и подверженным ошибкам. Вы можете установить атрибут default-dependency-check в корневом элементе
Для всех bean-компонентов, объявленных в этом файле конфигурации, по умолчанию используется режим проверки зависимостей all.
@Required Annotation
В большинстве сценариев вам просто нужно убедиться, что установлено определенное свойство, но не все свойства определенных типов (примитив, коллекция или объект). Аннотации @Required могут обеспечить эту проверку,see detail.