Компоненты Autowiring в приложении SpringBoot - PullRequest
0 голосов
/ 16 октября 2018

В настоящее время бин, который я хотел бы автоматически передать, возвращает nullpointerException.

Вот класс приложения:

package com.springbootapp.jerseyws;
.
.
.


  @SpringBootApplication
    public class JerseywsApplication {

    @Bean
    public CountryService countryService() {
        return new CountryService();
    }

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

Вот контроллер:

package com.springbootapp.jerseyws.controller;
.
.
.
    @Path("/country")
    public class CountryController {

    @Autowired
    private CountryService countryService;

    public CountryController() {
        //countryService = new CountryService();
    }

    @Path("list")
    @GET
    @Produces({MediaType.APPLICATION_JSON})
    public List<Country> getCountries() {
        return countryService.getCountries(); // <------ countryService is null
    }
}

А вот и служба страны:

package com.springbootapp.jerseyws.service;
.
.
.
    @Service
    public class CountryService {

    public List<Country> getCountries() {
        Country c1 = new Country("USA", 320);
        Country c2 = new Country("Norway", 6);
        Country c3 = new Country("Sweden", 10);
        List<Country> countryList = new ArrayList<>();
        countryList.add(c1);
        countryList.add(c2);
        countryList.add(c3);
        return countryList;
    }
}

Этот пример основан на аннотациях.Чего-то не хватает, потому что компонент, который я пытаюсь создать в аннотации @Autowired, имеет значение null.

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

попробуйте удалить приведенный ниже фрагмент из класса контроллера.пустой конструктор не нужен, если вы уже аннотировали контроллер с помощью @ restcontroller

public CountryController() {
    //countryService = new CountryService();
}
0 голосов
/ 16 октября 2018

Ваш контроллер нуждается в аннотации @RestController, иначе он не будет добавлен в контекст весны.Если класс не является частью весеннего контекста, он не может иметь @Autowired классов.

@Path("/country")
@RestController
public class CountryController {

удалить также

@Bean
public CountryService countryService() {
    return new CountryService();
}

он вам не нужен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...