작성
·
248
답변 1
1
안녕하세요. dldudtjs5996님, 공식 서포터즈 OMG입니다.
스프링 빈을 주입 받는 방식은 일반적으로 3가지 방식이 있습니다.
1. 필드 주입
@Autowired
private TestService testService;
2. 생성자 주입
private final TestService testService;
@Autowired
public TestController(TestService testService) {
this.testService = testService;
}
3. 수정자 주입
@Autowired
public void setTestService(TestService testService) {
this.testService = testService;
}
말씀하시는 생상되는 생성자가없어 주입할대상이없어서 라는 표현보다는해당 타입(제가 위에서 작성한 예시에선 TestService)으로 등록된 빈이 없어서 에러가 발생하는게 더 적합한 표현이라고 생각하며 빈이 등록되지 않은 상황에서 주입을 시도하면 에러가 발생하지만 (@Autowired의 default 는 true라서) false로 지정해놓으면 주입할 대상이 없을 때 setter 메서드를 호출하지 않아 문제를 발생시키지 않습니다.
감사합니다.
감사합니다