복붙노트

[SPRING] 기본 생성자가 없습니다. 중첩 예외는 스프링 MVC가있는 java.lang.NoSuchMethodException입니까?

SPRING

기본 생성자가 없습니다. 중첩 예외는 스프링 MVC가있는 java.lang.NoSuchMethodException입니까?

나는 봄 MVC 컨트롤러 프로젝트로 일하고있다. 아래는 내 컨트롤러이며 테스트 목적으로 특별히 사용하는 생성자가 선언되어 있습니다.

@Controller
public class TestController {

    private static KeeperClient testClient = null;

    static {

    // some code here

    }

    /**
     * Added specifically for unit testing purpose.
     * 
     * @param testClient
     */
    public TestController(KeeperClient testClient) {
        TestController.testClient = testClient;
    }

    // some method here

}

서버를 시작할 때마다 예외가 발생합니다.

No default constructor found; nested exception is java.lang.NoSuchMethodException:

하지만 TestController 생성자를 제거하면 문제없이 잘 작동합니다. 내가 여기서 뭐하는거야?

하지만이 기본 생성자를 추가하면 제대로 작동하기 시작합니다.

    public TestController() {

    }

해결법

  1. ==============================

    1.자신 만의 생성자를 생성하려면 no-args 또는 기본 생성자를 정의해야합니다.

    자신 만의 생성자를 생성하려면 no-args 또는 기본 생성자를 정의해야합니다.

    왜 인자 생성자가 디폴트인지 아닐지를 읽을 수있다.

    why-default-or-no-argument-constructor-java-class.html

  2. ==============================

    2.Spring은 유일한 생성자가 매개 변수를 필요로하기 때문에 TestController를 인스턴스화 할 수 없다. 인수가없는 생성자를 추가하거나 @Autowired 주석을 생성자에 추가 할 수 있습니다.

    Spring은 유일한 생성자가 매개 변수를 필요로하기 때문에 TestController를 인스턴스화 할 수 없다. 인수가없는 생성자를 추가하거나 @Autowired 주석을 생성자에 추가 할 수 있습니다.

    @Autowired
    public TestController(KeeperClient testClient) {
        TestController.testClient = testClient;
    }
    

    이 경우, Spring에게 KeeperClient 빈에 대한 응용 프로그램 컨텍스트를 검색하고 TestControllerler를 인스턴스화 할 때이를 주입하도록 명시 적으로 지정합니다.

  3. ==============================

    3.내 경우에는 스프링이 내부 클래스를 정적으로 만드는 것을 잊었 기 때문에 이것을 던졌다.

    내 경우에는 스프링이 내부 클래스를 정적으로 만드는 것을 잊었 기 때문에 이것을 던졌다.

    당신이 no-arg 생성자를 추가하는 데 도움이되지 않는다는 것을 알게되면 수정자를 확인하십시오.

  4. from https://stackoverflow.com/questions/25272543/no-default-constructor-found-nested-exception-is-java-lang-nosuchmethodexceptio by cc-by-sa and MIT license