를 사용하지 않고 싱글의 인스턴스를 얻기 위해 어떻게 싱글 톤 클래스를 가지고 같이 정의 :Guice는 : 인젝터 또는 생성자 삽입
@Singleton
class MySingletonClass{
....
}
나는이 싱글 톤 클래스를 사용하는 다른 클래스가 있지만,이 클래스는 사용하여 작성해야합니다 새로운 연산자. 따라서 나는 확실히 MyClass의 생성자에이의 인스턴스를 전달할 수 등
class MyClass {
public void method() {
// Uses instnace of MySingletonClass
}
}
생성자 주입 또는 세터 주입을 사용할 수 있지만 내 프로그램의 맥락에서 꽤 좋은 디자인을하지 않습니다.
또 다른 해결책은 MySingletonClass에 대한 정적 getInstance 메소드를 작성하여 프로그램의 어느 곳에서나 인스턴스를 얻을 수있게하는 것입니다. 하지만 Guice가 이와 비슷한 것을 지원하는지 알고 싶습니다. Guice가 어디서든 싱글 톤 인스턴스를 허용 할 수 있다고 확신합니다.
감사합니다.
* guice는 어디서든 싱글 톤 인스턴스를 가져올 수 있습니다. * Guice는 DI 컨테이너이므로 마술을 할 수는 있지만 conainer 내부에서만 가능하며이 컨테이너는'Injector' 인스턴스입니다. 암시 적으로 (컨테이너 내부에서 생성자 삽입을 통해) 또는 명시 적으로 (getInstance() 메소드를 통해) 액세스해야합니다. 결과적으로 클래스를 DI 컨트롤에 배치하거나 종속성을 수동으로 전달해야합니다. 첫 번째 해결 방법이 분명 좋습니다. –
답장을 보내 주셔서 감사합니다. 인젝터 인스턴스는 응용 프로그램의 최상위 수준 (예 : main 메소드)에서 전역 적으로 한 번 만들어야합니다. 하지만 거기에 명시 적으로 주 클래스에서 만든 인스턴스를 모든 클래스에 전달하지 않고 응용 프로그램에서 Injector 인스턴스를 얻을 수있는 방법이 있습니까? – Kevin
아니요, 없습니다. 결국 인젝터는 단순한 물체입니다. BTW, 하나 이상의 인젝터가있을 수 있으며, 그들은 계층 구조를 형성 할 수 있습니다. 그러면 전체 프로그램에서 어느 것이 사용 가능해야합니까? 'Injector' 인스턴스를 명시 적으로 전달하지 않고 얻을 수있는 유일한 방법은이를 관리되는 클래스 중 하나에 주입하는 것입니다. –