A diferença entre os feijões singleton da primavera e os padrões de singleton é que eles estão associados a diferentes ambientes. Os padrões de singleton referem -se a apenas uma instância em um processo JVM, enquanto o Spring Singleton refere -se a apenas uma instância em um recipiente de feijão de primavera (ApplicationContext).
Primeiro, olhe para o padrão Singleton. Em um processo JVM (teoricamente, um programa Java em execução deve ter sua própria JVM independente), existe apenas uma instância; portanto, não importa onde a instância seja obtida no programa, o mesmo objeto é sempre retornado. Tomando o tempo de execução embutido em Java como exemplo (a enumeração agora é a melhor prática do padrão de singleton), não importa onde o tempo e onde seja obtido, o julgamento a seguir é sempre verdadeiro:
// Com base no modo preguiçoso // sempre existe apenas uma instância em um JVM Instance RunTime.getRuntime () == RUNTIME.GETRUNTIME ()
Por outro lado, os grãos singleton da Spring estão intimamente relacionados aos seus contêineres (ApplicationContext). Portanto, em um processo de JVM, se houver vários contêineres de mola, mesmo um feijão singleton definitivamente criará várias instâncias. O exemplo do código é o seguinte:
// o primeiro contêiner de feijão da primavera ApplicationContext context_1 = new FileStystemXMLApplicationContext ("ClassPath: /ApplicationContext.xml"); Pessoa yiifaa_1 = context_1.getBean ("yiifaa", pessoa.class); // o segundo contêiner de primavera ApplicationContext context_2 = new FileSystemXMLApplicationContext ("ClassPath: /ApplicationContext.xml"); Pessoa yiifaa_2 = context_2.getBean ("yiifaa", pessoa.class); // Isso definitivamente não é igual, porque várias instâncias são criadas system.out.println (yiifaa_1 == yiifaa_2);Aqui está o arquivo de configuração da primavera:
<!-Mesmo que seja declarado como um singleton, várias instâncias serão criadas desde que existam vários contêineres-> <bean id = "yiifaa" scope = "singleton"> <construtor-arg name = "userrname"> <Value> yiifaa </value> <//construtor-arg> </borean>
Resumir
Os feijões singleton da primavera estão intimamente relacionados aos contêineres de gerenciamento de feijão da primavera. Cada contêiner criará sua própria instância exclusiva, por isso é muito diferente do padrão Singleton no padrão de design do GOF. No entanto, nas aplicações reais, se o ciclo de vida do objeto for completamente entregue ao gerenciamento da primavera (não criado por nova, reflexão etc. em outros lugares), o efeito do padrão singleton pode realmente ser alcançado.
O exposto acima é tudo sobre este artigo discutindo a diferença entre o modelo de Spring Singleton Bean e Singleton. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!