2016-01-28 3 views
0

Я начинаю изучать Spring Boot, и я следую учебнику на youtube. Однако в моем проекте происходит странное событие. Я только что создал контроллер под названием GreetingController. Ниже приведен полный код классаОшибка загрузки приложения Spring Boot Page

@RestController 
@EnableAutoConfiguration 
public class GreetingController { 

    private static BigInteger nextId; 

    private static Map<BigInteger, Greeting> greetingMap; 

    private static Greeting save(Greeting greeting) { 
     if (greetingMap == null) { 
      greetingMap = new HashMap<BigInteger, Greeting>(); 
      nextId = BigInteger.ONE; 
     } 
     greeting.setId(nextId); 
     nextId = nextId.add(BigInteger.ONE); 
     greetingMap.put(greeting.getId(), greeting); 
     return greeting; 
    } 

    static { 
     Greeting g1 = new Greeting(); 
     g1.setText("Hello World"); 
     save(g1); 

     Greeting g2 = new Greeting(); 
     g2.setText("Hola Mundo"); 
     save(g2); 
    } 

    @RequestMapping(value = "/api/greetings", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) 
    public ResponseEntity<Collection<Greeting>> getGreetings() { 

     Collection<Greeting> greetings = greetingMap.values(); 

     return new ResponseEntity<Collection<Greeting>>(greetings, 
       HttpStatus.OK); 

    } 

} 

Контроллер находится в следующей упаковке:

enter image description here

Однако, когда я грузиться приложение с URL http://localhost:8080/api/greetings на моей странице появляется следующее сообщение об ошибке :

enter image description here

Но, когда я поставил Greeti ngController в том же пакете Применение класса, как на картинке ниже:

enter image description here

А затем получить тот же URL http://localhost:8080/api/greetings, я получил правильный ответ:

enter image description here

Может кто-нибудь объясните мне почему?

+0

Вы настроили свой распознаватель изображения, чтобы найти правильный путь? – gwnp

ответ

3

Переименуйте свой com.example пакет в org.example. Spring boot сканирует контроллеры на все подпакеты пакета класса при размещении аннотации @SpringBootApplication.

Или положил @ComponentScan("org.example") на тот же класс. Таким образом вы скажите весеннему ботинку, где искать ваши контроллеры (и другие бобы).

+0

Это сработало! Я просто переименовал пакет! – Gabriel

1

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

В Application.java, можно добавить следующее:

@ComponentScan({com.example, org.example})

По умолчанию пакет, который Приложение в будет включена в ComponentScan, поэтому она работает для вас, когда у вас было контроллер в том же пакете, что и приложение.

Кроме того, вам не нужна аннотация @EnableAutoConfiguration на вашем контроллере FYI.

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