Spring Singleton Beans와 Singleton 패턴의 차이점은 다른 환경과 관련이 있다는 것입니다. 싱글 톤 패턴은 JVM 프로세스에서 하나의 인스턴스만을 나타냅니다. 스프링 싱글 톤은 스프링 콩 컨테이너 (ApplicationContext)에서 하나의 인스턴스만을 나타냅니다.
먼저 싱글 톤 패턴을보십시오. JVM 프로세스 (이론적으로 실행중인 Java 프로그램에는 자체 독립적 인 JVM이 있어야 함)에 하나의 인스턴스 만 있으므로 프로그램에서 인스턴스가 어디에서 획득하든 동일한 객체가 항상 반환됩니다. Java에서 내장 런타임을 예제로 취득합니다 (열거는 이제 싱글 톤 패턴의 모범 사례입니다) 시간과 위치를 얻는 위치에 관계없이 다음 판단은 항상 사실입니다.
// 게으른 모드를 기반으로 // JVM 인스턴스 런타임에 항상 하나의 인스턴스 만 있습니다. getRuntime () == runtime.getRuntime ()
대조적으로, Spring의 Singleton Bean은 컨테이너 (ApplicationContext)와 밀접한 관련이 있습니다. 따라서 JVM 프로세스에서 스프링 컨테이너가 여러 개있는 경우 싱글 톤 Bean조차도 여러 인스턴스를 만듭니다. 코드 예제는 다음과 같습니다.
// 첫 번째 스프링 Bean 컨테이너 ApplicationContext Context_1 = 새 FileSystemXmlApplicationContext ( "classPath :/applicationContext.xml"); person yiifaa_1 = context_1.getBean ( "yiifaa", person.class); // 두 번째 스프링 콩 컨테이너 ApplicationContext context_2 = new filesystemxmlapplicationContext ( "classPath :/applicationContext.xml"); person yiifaa_2 = context_2.getbean ( "yiifaa", person.class); // 여러 인스턴스가 System.out.println (yiifaa_1 == yiifaa_2)이 생성되기 때문에 확실히 같지 않습니다.
스프링 구성 파일은 다음과 같습니다.
<!-싱글 톤으로 선언하더라도 여러 컨테이너가있는 한 여러 인스턴스가 생성됩니다 .-> <bean id = "yiifaa"scope = "singleton"> <constructor-arg name = "username"> value> yiifaa </value> </constructor-arg> </bean>
요약
Spring의 Singleton Bean은 Spring Bean Management 컨테이너와 밀접한 관련이 있습니다. 각 컨테이너는 고유 한 인스턴스를 생성하므로 GOF 설계 패턴의 싱글 톤 패턴과는 매우 다릅니다. 그러나 실제 응용 분야에서 객체의 수명주기가 스프링 관리 (새로운 반사 등으로 생성되지 않음)에 완전히 전달되는 경우 싱글 톤 패턴의 효과가 실제로 달성 될 수 있습니다.
위의 내용은이 기사에 관한 모든 것이 Spring Singleton Bean과 Singleton 모델의 차이점을 논의합니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!