Если я добавляю аннотацию @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"));
}
}