Проверка зависимостей свойств Spring

Проверка зависимостей свойств 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-компоненты, объявленные в корневом элементе , применять это правило. Однако этот корневой режим по умолчанию будет переопределен собственным режимом компонента, если он указан.



    
        
        
    

    
        
        
        
    

Для всех bean-компонентов, объявленных в этом файле конфигурации, по умолчанию используется режим проверки зависимостей all.

@Required Annotation
В большинстве сценариев вам просто нужно убедиться, что установлено определенное свойство, но не все свойства определенных типов (примитив, коллекция или объект). Аннотации @Required могут обеспечить эту проверку,see detail.