Из вашей трассировки стека видно, что серверу не удается найти бин зависимости, который нужно внедрить. Итак, сначала проверьте, что при запуске приложения создается желаемый бин для класса. Убедитесь, что класс обслуживания находится в пути к классам для компонента. выполнить сканирование, в противном случае включите пакет для сканирования.
Вы используете аннотацию @Inject
вместо пружинной аннотации @Autowired
для добавления бобов. Она будет работать нормально, но первое и самое важное отличие между аннотациями @Autowired
и @Inject
заключается в том, что аннотация @Inject доступно только начиная с Spring 3.0, поэтому, если вы хотите использовать внедрение зависимостей на основе аннотаций в Spring 2.5, вы должны использовать аннотацию @Autowired
.
Во-вторых, используйте аннотацию @Service
для уровня обслуживания, а не аннотацию @Component
.
Указывает, что аннотированный класс является «Сервисом», изначально определенным
по доменно-управляемой конструкции (Эванс, 2003) как «операция, предлагаемая как
интерфейс, который стоит отдельно в модели, без инкапсулированного состояния. "
Может также указывать, что класс является «Фасадом бизнес-услуг» (в
Основные J2EE-шаблоны имеют смысл) или что-то подобное. Эта аннотация
универсальный стереотип и отдельные команды могут сузить
семантика и использование по необходимости.
Эта аннотация служит специализацией @Component, позволяя
классы реализации, которые будут автоматически обнаруживаться при сканировании пути к классам.
@Service
public class RecommendationServiceImpl implements RecommendationService{
@Override
public List<Recommendation> getRecommendations(String currency, String entity) {
return Collections.emptyList();
}
@Override
public Recommendation get(UUID uuid) {
return null;
}
}
Я не являюсь экспертом по использованию трикотажа со Springboot, поэтому я не знаю, являются ли какие-либо конфигурации причиной этой проблемы.
Может быть, эта тема может вам помочь больше:
Инъекция зависимости с Джерси 2.0