Yuk팡
158
2019-04-16 12:07:20
2
146

스프링 빈설정에 질문이있습니다.


AAA 클래스에다음과 같이 적혀있습니다.

@Component
public class AAA {
	
	private int a;
	private String b;
	private String c;

        public AAA(int a, String b, String c){
             this.a = a;
             this.b = b;
             this.c = c;
        }

        get,set 부분생략
}

근데 컨트롤러에서 

@Autowired

AAA클래스 aaa클래스;

하는데 에러가 발생합니다.

컨트롤러에서는 바로 set 메소드로 값을 넣어주는데 
AAA 클래스에 

public AAA(){
}
를 추가해야지 에러가 안나고 정상적으로 동작하는데 그 이유를 알고싶습니다.
0
0
  • 답변 2

  • dogi
    167
    2019-04-16 13:00:56 작성 2019-04-16 13:04:32 수정됨

    AutoWired가 자동으로 주입하는데 AAA클래스 aaa클래스가 파라미터가 3개 있는 생성자를 참조하지 못해서가 아닐까요.

    1
  • LichKing
    13k
    2019-04-16 13:04:04

    뭐가 됐던 AAA의 객체를 만들어야 스프링빈등록이고 DI고 가능합니다.

    AAA의 인스턴스를 만들기 위해선 생성자를 호출해야겠죠.

    근데 별도의 설정이 없다면 AAA의 생성자에 어떤 인자를 보내야하는지 알 수 없으므로 기본생성자를 호출하게됩니다.

    그런데 AAA에 기본생성자가 없으니 예외가 발생하게되죠.

    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.