2015-07-16 3 views
5

Im new to Spring, последние пару дней. Я узнал об этом. Теперь я пытаюсь что-то с этим сделать. Мне кажется, что с весенним ботинком все изменилось. Нет файла applicationContext, я должен использовать @Bean. ОК. В учебниках код работает, для меня это терпит неудачу. Что я упустил?Весенняя загрузка зависимой инъекции

@SpringBootApplication 
public class Application { 

    public static void main(String[] args) { 
    SpringApplication.run(Application.class, args); 
    } 
} 

контроллер:

@RestController 
public class GreetingController { 

private final Test test; 

@Autowired 
public GreetingController(Test test){ 
    this.test = test; 
} 

@RequestMapping("/greeting") 
    public String greeting(@RequestParam(value = "name", defaultValue = "World") String name) { 
    return "greeting" + test.getTest(); 
    } 
} 


class Test { 

    public String getTest() { 
    return "tetst"; 
    } 
} 

ошибка:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [hello.Test] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942) 
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:813) 
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) 
... 18 more 

Я предполагаю, что боб должен быть определен ... Но в учебниках нет defenicion боба .. Или я не видел.

+0

В каком пакете есть 'приложение' и' GreetingController'? '@ SpringBootApplication' сканирует контроллеры и компоненты, но они должны быть в одном пакете или на более низком уровне. – spencergibb

ответ

9

Test класс не признается пружинным компонентом. Поэтому вы не можете вводить его в свой GreetingController. Чтобы ввести объект Test в этот контроллер, отметьте Test класс с аннотацией @Component (или с помощью другой аннотации, которая указывает, что ваш класс может быть автоматически сканирован).

3

Пропущена полная ошибка. Вам нужно @Component по телефону Test.

+0

, давая вам голосование. спасибо – 5er

Смежные вопросы