Я новичок в использовании MVC и spring и у меня возникли проблемы с добавлением служебного файла. У меня есть 3 файла: Controller. java, Service. java и ServiceImpl. java. Моя цель - переместить все текущие логики c службы в существующем классе Controller на уровень Service, поэтому я знаю, что logi c внутри методов не является проблемой. Проблема, с которой я сталкиваюсь, заключается в том, что все методы Я пытаюсь позвонить из службы. java в контроллере. java возвращает ноль и приводит к ошибкам нулевого указателя.
Я видел много решений, когда переменная autowired была нулевой, но я уверен, что это не моя проблема.
Контроллер. java
package project.controller;
import project.type.ServiceType;
import project.service.Service;
@Controller
public class Controller {
@Autowired
private final Service service;
@Autowired
public Controller(final Service service) {
this.service = service;
}
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody Object post() {
ServiceType var1 = service.serviceMethod(true); ---> always sets var1 to null
service.serviceMethod2(var1); ---> Throws NPE
switch (var1) {
case SUCCESS:
return "Success";
case FAILURE:
return "Failure";
default:
return null;
}
}
}
Сервис. java
package project.service;
public interface Service{
public ServiceType serviceMethod(boolean bool);
public ServiceType serviceMethod2(ServiceType serviceType);
}
ServiceImpl . java
package project.service.impl;
import project.type.ServiceType;
import project.service.Service;
@Service
public class ServiceImpl implements Service{
@Override
public ServiceType serviceMethod(boolean bool){
if(bool){
return ServiceType.SUCCESS;
}
return ServiceType.FAILURE;
}
@Override
public ServiceType serviceMethod2(ServiceType serviceType){
*calculate*
}
}
ServiceType. java
package project.type;
public enum ServiceType {
SUCCESS,
FAILURE
}
ServiceConfig. java
package project.config;
import Service;
import ServiceImpl;
@Configuration
public class ServiceConfig {
@Bean
public Service Service() {
return new ServiceImpl();
}
}
В IntelliJ видно, что моя служебная переменная = "service", поэтому она, кажется, вытягивает из правильного местоположения.
Я приложил все усилия, чтобы воссоздать мой код в общем c путь. Я чувствую, что отсутствует какая-то небольшая связь, которая может быть причиной этой проблемы, поэтому любые мысли о том, почему это происходит, будут высоко оценены!