Spring Beans и внедрение зависимостей

Вы можете использовать любой из стандартных методов Spring Framework для определения ваших bean-компонентов и их внедренных зависимостей. Часто простое использование @ComponentScan (чтобы найти ваши bean-компоненты) и использование @Autowired (для внедрения в конструктор) работает хорошо.

Если вы структурируете свой код, как предложено ранее (поместив класс приложения в корневой пакет), вы можете добавить @ComponentScan без каких-либо аргументов. Все компоненты вашего приложения (@Component, @Service, @Repository, @Controller и т. д.) автоматически регистрируются как Spring Beans.

В следующем примере показан Bean @Service, который использует внедрение в конструкторе для получения требуемого bean RiskAssessor:

package com.example.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class DatabaseAccountService implements AccountService {

    private final RiskAssessor riskAssessor;

    @Autowired
    public DatabaseAccountService(RiskAssessor riskAssessor) {
        this.riskAssessor = riskAssessor;
    }

    // ...

}

Если у bean есть один конструктор, вы можете опустить @Autowired, как показано в следующем примере:

@Service
public class DatabaseAccountService implements AccountService {

    private final RiskAssessor riskAssessor;

    public DatabaseAccountService(RiskAssessor riskAssessor) {
        this.riskAssessor = riskAssessor;
    }

    // ...

}

Обратите внимание на то, как с помощью внедрения в конструкторе поле riskAssessor помечается как final, что указывает на то, что оно не может быть впоследствии изменено.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки