본문 바로가기

legacy/Spring

[Spring-Error] Constructor with '1' parameters is already defined

 

결론부터 말하자면 @RequiredArgsConstructor을 사용하면서 생성자를 추가적으로 생성하였기 때문에 발생한다. 

 

@RequiredArgsConstructor 애너테이션은 final이 붙은 변수들을 모아 생성자로 만들어준다.

@Configuration
@RequiredArgsConstructor
public class JdbcTemplateV1Config {

    private final DataSource dataSource;
    
    // 생략
}

dataSource에 final이 붙었기 때문에 아래와 같이 생성자를 만들어준다.

public JdbcTemplateV1Config(DataSource dataSource) {
    this.dataSource = dataSource;
}

Constructor with '1' parameters is already defined 

오류 메시지에서도 알 수 있듯이 파라미터가 이미 정의되어 있다고 한다. DataSource는 @RequiredArgsConstructor를 통해 이미 정의되어 있는데, 추가적인 생성자를 만들어서 또다시 정의했기 때문에 오류가 발생했다.