СОДЕРЖАНИЕ ЦИКЛА СТАТЕЙ
Сегодняшняя статья будет квинтэссенцией альтруизма (халява – одним словом). Я для себя разработал одну очень полезную библиотеку. Она решает любые проблемы. Веб-сервис? Пожалуйста! Чат-бот? Сверточная нейронная сеть? Да без проблем! Мне не жалко с вами ей поделиться: «ru.java.rush.chuck-norris-1.0.jar»
Она названа в честь Чака Норриса за умение быстро решать проблемы. Давайте я уже вам покажу, как ей пользоваться. Качаем файл, сохраняем туда, где его потом можно будет легко найти. Теперь по быстрому создадим пустой spring-boot проект, подключим Lombok.
В проекте создадим пакет utils и знакомый нам уже class InitiateUtils implement CommandLineRunner. Загрузим библиотеку в проект следующим образом (у новых версий Intellij IDEA «+» находится слева внизу, над надписью Dependencies storage format). Теперь библиотека появилась в открывающемся списке External Libraries проекта (возможно, надо будет после этого перезапустить проект).
Настало время внедрить нашего Чака в class InitiateUtils и реализовать там же метод для решения всех проблем. В параметр метода напишем нашу проблему: "Я хочу написать супер-пупер проект, чтобы меня сразу взяли в Гугл!".
Встречаются как-то раз Чак Норрис и Дмитрий Нагиев в общественной бане…
КАК!!?? ЧТО!?? Ошибка? Да еще и на чужом языке! Не может быть, ведь мы все делали как написано выше! О мой бог! Это значит, мы не напишем супер-пупер проект, и нас не возьмут в Гугл, и мы не попадем в Hollywood и не увидим там мистера Норриса!😭😭😭
Так, отставить! Чак Норрис никогда не плачет от ошибок, это ошибки плачут от него!
Давайте разбираться, вот собственно вся ошибка:
package ru.java.rush.utils;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Service;
import ru.java.rush.ChuckNorris;
@Service
@RequiredArgsConstructor
public class InitiateUtils implements CommandLineRunner {
private final ChuckNorris chuckNorris;
@Override
public void run(String... args) throws Exception {
//метод для решения всех проблем
chuckNorris.SolutionToAllProblems("Хочу написать супер-пупер проект, чтобы меня сразу взяли в Гугл!");
}
}
Сейчас этот парень в шляпе начнет творить чудеса. Запускаем проект.
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in ru.java.rush.utils.InitiateUtils required a bean of type 'ru.java.rush.ChuckNorris' that could not be found.
Action:
Consider defining a bean of type 'ru.java.rush.ChuckNorris' in your configuration.
Я в английском не силен, но тут говорится примерно следующее:
Что приложение не запустилось, потому что для параметра конструктора (Кстати, вы знаете о каком конструкторе идет речь? В коде я никаких конструкторов не видел) InitiateUtils требуется Бин типа ChuckNorris, который не найден.
Дальше предлагает нам решение:
Попробуйте определить Бин ChuckNorris в своей конфигурации.
Другими словами, нужно сконфигурировать бин! Те кто читал ссылки, которые я оставлял ранее, выдохнули с облегчением, они знают что и как делать. Ну а те кто, еще не почитал, наверное, сейчас почитают.
Как думаете ChuckNorris сейчас находится в контексте или нет?
Думаю, вы дальше и без меня справитесь: Сконфигурируете бин ChuckNorris и вызовете метод для решения всех проблем.
А я пока пойду пересмотрю пару серий Крутого Уокера…
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ