에서 컨트롤러 내에서 방법을 실행하는 방법은 컨트롤러 클래스가 있습니다외부 컨트롤러
@Controller
public class MyController {
@AutoWired
Service myservice
@RenderMapping
public display(){
//do work with myservice
}
}
내가 외부 클래스에서 메소드 표시()를 호출하고 싶지만 내가 널 포인터 예외 오전.
new MyController.display()
그러나 인스턴스 MYSERVICE는 null로 설정되는 : 여기
내가 외부 클래스에서 디스플레이 메소드를 호출하고 방법이다.
MyController.display()를 호출하고 myservice의 인스턴스가 null로 설정되지 않도록하려면 어떻게해야합니까?
나는이 문제가 서비스의 자동 인스턴스가 아닌 컨트롤러의 새로운 인스턴스를 생성 할 때부터라고 생각합니까? 하지만 스프링 컨트롤러가 싱글 톤이기 때문에 아마도 컨트롤러의 현재 인스턴스에 액세스 할 수 있습니까?
업데이트 :
이유 나는 이것이 내가 구현해야하는 컨트롤러 표시 방법을 결정하는 설정 옵션을 추가 해요입니다하려합니다. 아마도 어떤 컨트롤러를 구현해야하는지 결정하기 위해 수퍼 컨트롤러를 사용해야할까요?
당신은 모든 의존성이 주입되도록 스프링 컨텍스트를 사용하여 MYCONTROLLER를 얻을 필요가있다. new를 사용하여 인스턴스를 직접 생성하는 경우 스프링을 갖는 전체 지점이 무효화됩니다. 또한 myservice에 대한 setter 및 getter가 있는지 확인하십시오 –
이 클래스의 인스턴스를 수동으로 만들 수는 없으며 스프링으로 관리됩니다.이를 수행하는 더러운 방법이 있지만 권장되지 않습니다. 가장 좋은 점은 무엇인지 알려주고 그 다음에 해결책을 찾는데 도움을 줄 수 있습니다 – Jaiwo99
@ Jaiwo99 업데이트를 참조하십시오 –