Пружинная загрузка DI с использованием Inject. Класс не распознан - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь запустить загрузочное приложение Spring. Я точно хочу использовать DI и изучаю пакет аннотаций javax.inject. Однако документации по нему очень мало. Это то, что я имею в виду очень простая настройка

@RestController
public class HelloController {

    @Inject
    private IGreetingService greetingService;

    @RequestMapping("/")
    public String index() {

        return greetingService.greet();
    }
}

public class GreetingService implements IGreetingService {

    @Override
    public String greet(){
        DummyObject dummyObject = new DummyObject("valueOne", 10);
        ObjectMapper mapper = new ObjectMapper();

        String dummyObjectJson = "";
        try{
            dummyObjectJson = mapper.writeValueAsString(dummyObject);
        }catch(IOException e){}

        return dummyObjectJson;
    }
}

Я получаю следующую ошибку:

Field greetingService in com.accenture.greetings.HelloController required a bean of type 'com.accenture.interfaces.IGreetingService' that could not be found.
  • Должен ли я действительно определить мой GreetingsService как bean-компонент в XML? Я бы предпочел не делать этого.
  • Какие дополнительные аннотации / классы / контекстные менеджеры мне нужны, чтобы убедиться, что greetingsService правильно распознается и вводится?

1 Ответ

1 голос
/ 03 апреля 2019

Поместите @Service в GreetingService, и если это не сработает, проверьте структуру проекта.

Если другие иерархии пакетов находятся ниже вашего основного приложения с аннотацией @SpringBootApplication, вы 'покрывается неявным компонентным сканированием.

Если в других пакетах есть бины / компоненты, которые не являются подпакетами основного пакета, вы должны вручную добавить их как @ComponentScan

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...