2014-07-25 3 views
-1

스프링을 사용하는 방법을 배우기 전에 의존성 주입을 이해하려고합니다. 내 질문은 Setter 기반 Dependency Injection의 다음 예제에서 TextEditor 클래스에 대한 생성자가없는 이유는 무엇입니까? 여기에 생성자가 필요하지 않습니까? 도와 주셔서 대단히 감사합니다 !!java 의존성 주입 (setter 메소드 주입)

(에서 공급 코드 : http://www.tutorialspoint.com/spring/setter_based_dependency_injection.htm) 명시 적으로 생성자를 선언하지 않으면

package com.tutorialspoint; 

public class TextEditor { 
    private SpellChecker spellChecker; //Q: Why not a constructor for TextEditor, but only a class variable? 

// a setter method to inject the dependency. 
    public void setSpellChecker(SpellChecker spellChecker) { 

    System.out.println("Inside setSpellChecker."); 
    this.spellChecker = spellChecker; 

} 
// a getter method to return spellChecker 
    public SpellChecker getSpellChecker() { 
    return spellChecker; 
    } 

    public void spellCheck() { 
    spellChecker.checkSpelling(); 
} 
} 

답변

2

은 기본 인수 없음의 public 생성자가 자동으로 추가됩니다. tutorials에서

클래스에 대해 생성자를 제공 할 필요는 없지만 이렇게 할 때는주의해야합니다. 컴파일러는 생성자없이 모든 클래스에 대해 인수없는 기본 생성자를 자동으로 제공합니다.

그리고이 생성자는 Spring 컨테이너에서 객체를 인스턴스화하는 데 사용됩니다.