Autowire возвращает сервисный класс, если я добавляю аннотацию @EnableJpaRepositories. - PullRequest
0 голосов
/ 06 ноября 2019

Если я добавляю аннотацию @EnableJpaRepositories в классе конфигурации, то экземпляр службы Autowire класса обслуживания становится нулевым и выбрасывает нулевое исключение указателя, а если я удаляю аннотацию Autowire Works отлично работает.

В ответ я получаю исключение NullPointerException ajaxDemoService.getCountryList ();Линия контроллера.

Как я могу решить эту проблему?

Ниже приведен мой код конфигурации.

 @Configuration
        @EnableWebMvc
        @ComponentScan(basePackages = {"com.advanced.controller","com.advanced.service","com.advanced.repository"})
        @EnableJpaRepositories(basePackages = {"com.advanced.repository"})
        public class WebConfig extends WebMvcConfigurerAdapter {
            @Bean
            public InternalResourceViewResolver resolver() {
                InternalResourceViewResolver resolver = new InternalResourceViewResolver();
                resolver.setViewClass(JstlView.class);
                resolver.setPrefix("/WEB-INF/view/");
                resolver.setSuffix(".jsp");
                return resolver;
            }

                @Override
                public void addResourceHandlers(ResourceHandlerRegistry registry) {
                    registry
                        .addResourceHandler("/resources/**")
                        .addResourceLocations("/resources/");
                }
            }

controller.java

 @Controller
    public class AjaxController {

        @Autowired
        AjaxDemoService ajaxDemoService;

        @RequestMapping(value = "/country", method = RequestMethod.GET)
        public @ResponseBody  List<Country> getAllCountries() {
            return ajaxDemoService.getCountryList();
        }
    }

Service.java

public interface AjaxDemoService {

    public List<Country> getCountryList();

    public List<State> getStateList(int countryId) throws Exception;
}

ServiceImpl.java

@Service
public class AjaxDemoServiceImpl implements AjaxDemoService {

    @Autowired
    CountryRepository countryRepository;

    @Autowired
    StateRepository stateRepository;

    @Override
    @Transactional
    public List<Country> getCountryList() {
        return countryRepository.findAll();
    }

    @Override
    @Transactional
    @SuppressWarnings("unchecked")
    public List<State> getStateList(int countryId) throws Exception {
        return (List<State>) stateRepository.findById(countryId).orElseThrow(() -> new Exception("Resource Not Found"));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...