Prefácio
No artigo anterior, é mencionado que, através de interfaces como InitializandoBean e Dispositável, algumas operações personalizadas podem ser feitas para inicialização e destruição do feijão. Uma coisa a observar é que é apenas uma operação depois que o feijão é instanciado por um contêiner. No mundo da primavera, se você quiser fazer algo sobre o processo de instanciação, como desenvolvedor de negócios comuns, obviamente não precisa herdar o ApplicationContext ou o Beanfactory, porque o contêiner de mola nos fornece algumas interfaces, permitindo que a operação de inicialização do BEANSTR do BEANFACTORY na forma de plug -in, incluindo nosso protagonista hoje -
Código -fonte, dê uma prévia
Este uso é muito simples. Ele tem apenas dois métodos. Implementamos o nosso próprio beanPostProcessor, e a primavera pode registrá -lo automaticamente no contêiner.
onde o método anterior é executado após a instanciação do feijão, após a configuração da propriedade, mas antes do método de inicialização; Depois que o método é executado após vários métodos de inicialização.
Falando nisso, algumas pessoas podem se perguntar: qual é a diferença entre isso e outras interfaces de inicialização no ciclo de vida? Outros métodos de inicialização também podem modificar o feijão. Esta pergunta é boa. Vamos falar sobre a diferença essencial entre essa interface e a interface descartável InitializingBean e o método de destruição de init personalizado.
Existem dois BPPs especiais aqui. Devo dizer que, se você precisar personalizar uma anotação semelhante à função de injeção @Autowire ou @inject (você pode usar o InjeçãoMetadata), o BPPS comum pode não atender às suas necessidades e você pode usar dois BPPs especiais.
MergedBeanDefinitionPostProcessor (a seguir referido como MBDPP)
Instantatiowarebeeanpostprocessor (doravante referido como IABPP)
Todos eles herdam do BPP, mas o ponto de entrada no processo de criação de grãos de mola é diferente do BPP comum.
Interface instantacionaWareBeanPostProcessor
Veja os comentários
Método pós -processamento para instantiação
Verifique o método CreateBean de abstrateAutowirecapableBeanFactory (este método é o método principal de criar feijões em recipientes de mola). Você pode ver que o pós -processamento para a instanciação é antes da instanciação do feijão, o pós -processamento de fércia é definido após a instanciação e antes da injeção do AutoWire. Geralmente é usado internamente na estrutura da primavera, mas há um grande potencial aqui. Use o pós -processamento para a instantação para gerar objetos de proxy (o método geral é tornar o retorno do pós -processador para a instantação não nula, o que interromperá o processo subsequente de criação de instâncias de feijão. O objeto retornado por esse método será usado como a instância do feijão). Veja o código -fonte:
Método PostprocessPropertyValues
Use pós -ProcessPropertyValues para concluir várias operações em propriedades, analisar metadados em anotações, etc. @autowire injeção de Spring, @Inject do JSR330, e o @Resource do JSR250 e outras operações de injeção são concluídas através deste método.
Essa interface é usada na primavera e os alunos interessados podem ler o código -fonte. A seguir, são apresentadas duas implementações típicas.
AutowiredannotationBeanPostProcessor
AbstractAutoProxycreator
Interface MergedBeanDefinitionPostProcessor
Essa interface passa em uma rootBeandEfinition, que nos permite modificar a definição do feijão. @AutuWiredAnnotationBeanPostProcessor usa esse método para verificar e registrar os membros que precisam ser injetados.
BeanFactoryPostProcessor (BFPP)
Além do beanPostProcessor, há outro tipo de coisa que todo mundo sabe, ou seja, BeanFactoryPostProcessor
O BFPP é um plug -in de extensão importante para o Beanfactory e pode ser personalizado com o BeandEfinition. Sua principal diferença de BPP é:
Ok, depois de dizer tanto, vamos dar uma olhada no fluxograma geral da criação de feijão da primavera. Somente os nós mais críticos estão marcados aqui.
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.