Prefácio
Existem muitas maneiras de injetar casos na primavera, mas devido à diferente ordem de inicialização, o método de injeção com base na anotação é propenso a falha em ser injetado corretamente com sucesso.
Este artigo introduzirá uma maneira dinamicamente baseada em extrair feijões gerenciados pela mola em projetos reais. Não vou dizer muito abaixo, vamos dar uma olhada na introdução detalhada juntos.
1. Injetar instâncias com base na rotulagem
Quando o feijão é inicializado, o objeto depende deve ser inicializado. Se o objeto injetado for inicializado posteriormente ao objeto atual, o objeto injetado será nulo.
1.1 @Autowired
Carregue os feijões gerenciados por mola por tipo. Por padrão, seu feijão deve existir. Se o seu feijão for nulo, sua propriedade necessária poderá ser definida como falsa. Para detalhes específicos, consulte o código -fonte:
@Target ({ElementType.Constructor, ElementType.Method, ElementType.parameter, ElementType.field, ElementType.annotation_type})@retention (retentionPolicy.Runtime)@DocumentEdPublic@interface Is AutOutired {/*** *Padrões para {@code true}.*/Boolean requerir () padrão true;}Se você precisar injetar um feijão com base em um comando, precisará usar o @qualifier para rotular o nome. O exemplo do código é o seguinte:
@Autwired@Qualifier ("Beanname") Private BeanType Beanobj;Escopo de aplicação: variáveis acima, métodos de setter e construtores.
Fonte: Spring Framework
1.2 @Inject
Fornecido por javax.inject.inject, ele é montado automaticamente com base no tipo. Se você precisar transferir de acordo com o nome, precisará usar o @Named em conjunto com ele. Esse uso é muito semelhante ao @Autowired fornecido pelo Spring Framework.
Escopo de aplicação: variáveis, métodos de setter, construtores
Fonte: JSR330 Especificação Javax Pacote de extensão
Exemplo de código:
@Inject@nomeado ("beanname") privado beanype Bean;1.3 @resource
O padrão é a injeção de montagem pelo nome. Somente quando o feijão que corresponde ao nome não puder ser encontrado será a injeção por tipo. É fornecido após o JDK 1.6.
Escopo de aplicação: pode ser aplicado a variáveis e métodos de setter
Fonte: Fornecido após o JDK 1.6
Exemplo de uso de código:
@Resource (name = "mybeanName") Private Beanype Bean;
2. Método de injeção dinâmica
Ideia: use o ApplicationContextAwe para obter a referência do ApplicationContext e, em seguida, obtenha dinamicamente o objeto com base no ApplicationContext.
O código de implementação é o seguinte:
@ComPonentPublic Classe SpringContextutil implementa ApplicationContexTAWare {// Spring Application Ambiente de contexto privado ApplicationContext ApplicationContext;/** Implemente o método de retorno de chamada da interface ApplicationContexTAWare e defina o ambiente de contexto ** @param ApplicationContext*/public Void setApplicationContext (ApplicationContextContetContext) {ApplicationContext). applicationContext;}/*** @return ApplicationContext*/public static ApplicationContext getApplicationContext() {return applicationContext;}/*** Get object** @param name* @return Object* @throws BeansException*/public static Object getBean(String name) throws BeansException {return applicationContext.getBean(name);}}Depois disso, você pode obter dinamicamente as instâncias de feijão exigidas no código:
Beanype Bean = SpringContextutil.getBean ("Beanname")Não é muito fácil de usar?
Resumir
Aqui, resumimos as várias maneiras de injetar grãos na primavera, cada uma com suas vantagens e desvantagens, e você pode optar por usá -los.
Ok, 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.