Cześć. Obecnie uczę się frameworka Spring i wyskoczył mi błąd "Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'castle' available". Czy ktoś korzystający ze Springa jest w stanie mi pomóc i podpowiedzieć co jest nie tak?
package com.kusrSpring.kursSpring;
import domain.Castle;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class KursSpringApplication
{
public static void main(String[] args)
{
ConfigurableApplicationContext ctx = SpringApplication.run(KursSpringApplication.class, args);
Castle castle = (Castle) ctx.getBean("castle");
System.out.println(castle);
}
}
package domain;
public class Knight
{
private String name;
private int age;
private Quest quest;
public Knight (String name, int age, Quest quest)
{
this.name = name;
this.age = age;
this.quest = quest;
}
public Knight (String name, int age)
{
this.name = name;
this.age = age;
}
public void setQuest (Quest quest)
{
this.quest = quest;
}
@Override
public String toString ()
{
return "Rycerz o imieniu: " + name + " (" + age + "). Zadanie: " + quest + ".";
}
}
package com.kusrSpring.kursSpring;
import domain.DragonKillingKnight;
import domain.Knight;
import domain.Quest;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class Starter implements CommandLineRunner
{
@Override
public void run(String... args) throws Exception
{
Quest saveThePrincess = new Quest("Uratuj Ksiezniczke");
Knight Lancelot = new Knight("Lancelot", 29, saveThePrincess );
System.out.println(Lancelot);
Quest killTheDragon = new Quest("Zabij smoka");
Knight percival = new Knight("Percival", 35);
System.out.println(percival);
percival.setQuest(killTheDragon);
System.out.println(percival);
}
}
package domain;
public class Quest
{
private String description;
public Quest (String description)
{
this.description = description;
}
@Override
public String toString ()
{
return description;
}
}
package domain;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@Component
public class Castle
{
private String name = "East Watch";
public Castle ()
{
}
@PostConstruct
public void build ()
{
System.out.println("Zaraz wybudujemy zamek " + name);
}
@PreDestroy
public void destroy ()
{
System.out.println("Zaraz zniszczymy zamek " + name);
}
@Override
public String toString ()
{
return "Znajduje sie tutaj zamek o nazwie: " + this.name;
}
}