A mola é uma inversão leve de controle (IOC) e estrutura de contêiner orientada a tangente (AOP). Como obter o feijão configurado da primavera em um programa?
Factory Bean (com.springframework.beans.factory.beanfactory) é a interface principal da estrutura da primavera. Ele fornece mecanismo avançado de configuração do COI. O Beanfactory possibilita o gerenciamento de diferentes tipos de objetos Java. O contexto do aplicativo (com.springframework.context.applicationContext) é baseado no BeanFactory e fornece mais funções orientadas para o aplicativo. Ele fornece sistema de eventos de suporte e estrutura internacional, facilitando a criação de aplicações práticas. Geralmente chamamos Beanfactory de contêiner do COI e ApplicationContext de contexto de aplicativo. Mas, às vezes, por uma conveniência de escrever, também chamamos o ApplicationContext Spring Container.
Para os propósitos dos dois, podemos simplesmente dividi -los: o Beanfactory é a infraestrutura da estrutura da mola, destinada à própria primavera; ApplicationContext é para desenvolvedores que usam a estrutura da primavera. Em quase todas as ocasiões de aplicação, usamos diretamente o ApplicationContext em vez do BeanFactory subjacente.
Há uma diferença significativa entre a inicialização do ApplicationContext e o Beanfactory: quando o BeanFactory inicializa o contêiner, ele não instancia o feijão até que o feijão alvo seja acessado pela primeira vez; Enquanto o ApplicationContext instancia todos os grãos únicos ao inicializar o contexto do aplicativo. Portanto, o tempo de inicialização do ApplicationContext será um pouco mais longo que o de Beanfactory
Este artigo não envolve injeção automática através do @Resource e @Autowired, e só obtém feijões no arquivo de configuração do Spring através do ApplicationContext.
Para configurar o feijão no XML, o mais importante é obter org.springframework.context.applicationContext
O primeiro método para obter ApplicationContext:
importar org.springframework.context.applicationContext; importar org.springframework.context.support.filesystemxmlapplicationContext; ApplicationContext ApplicationContext = new FileStystemXMLApplicationContext ("ApplicationContext.xml");ou
importar org.springframework.context.applicationContext; importar org.springframework.context.support.classPathXMLApplicationContext; Private ApplicationContext ApplicationContext = new ClassPathXMLApplicationContext ("ApplicationContext.xml");Instantar o ApplicationContext dessa maneira é muito demorado. Dessa forma, é adequado para aplicações independentes usando a estrutura de mola. É recomendável usar apenas quando o programa precisa inicializar manualmente a mola através de arquivos de configuração. As principais classes de implementação do ApplicationContext são ClassPathXMLApplicationContext e FileSystemXMLApplicationContext. Os primeiros carregam arquivos de configuração do ClassPath por padrão, e o último carrega arquivos de configuração do sistema de arquivos por padrão.
exemplo:
public class BeanManager {private estático ApplicationContext Context = new ClassPathXMLApplicationContext ("AppContext.xml"); public static objeto getbean (string beanid) {return context.getbean (beanid);}}}Escreva um servlet em web.xml, comece automaticamente e ligue para BeanManager no método init
init () lança servletexception {beanmanager bm = new beanmanager (); // opcional, de modo que a mola carrega a configuração do feijão quando o aplicativo da web é iniciado. // Caso contrário, será carregado quando o BeanManager for chamado pela primeira vez, afetando a velocidade uma vez. }Use beanmanager.getbean (string beanid); no código Java para obter a instância do Bean.
O segundo método para obter o ApplicationContext: Obtenha o objeto ApplicationContext através da classe de ferramentas fornecida pelo Spring. É um método especialmente personalizado para projetos da Web. Recomenda -se usá -lo em projetos da Web. Por exemplo:
ServletContext servletContext = request.GetSession (). sc) ac1.getbean ("beanid"); ac2.getbean ("beanid");Obtenha o objeto ApplicationContext Instância através do Javax.Servlet.ServletContext, o que significa que a solicitação, sessão etc. deve ser usada.
Dessa forma, o objeto ApplicationContext não pode ser definido como uma variável de membro. Em cada método específico, você precisa obter o servletContext por meio de solicitação, sessão etc. e, em seguida, obter a instância do ApplicationContext.
Portanto, esse método é recomendado apenas em um caso em que você possa obter o objeto ServletContext e não precisa definir o objeto ApplicationContext como uma variável de membro.
NOTA: Ao usar o WebApplicationContextUtils para obter a instância do ApplicationContext, você precisa adicionar o ouvinte org.springframework.web.context.contextloaderListener no arquivo de configuração web.xml, caso contrário, o objeto ApplicationContext não pode ser obtido e o nulo é retornado.
Arquivo de configuração: web.xml
<!-ContextLoaderListener injeta automaticamente o ApplicationContext e recebe o local de carregamento de arquivo de arquivo de configuração de spring-> <! am-name> <am param-value> /web-inf/spring/appcontext.xml,/web-inf/spring/appintercept.xml </param-value> </context-s-caram> <lister> <visterl-class> org.springframework.web.Contet.ConterLlownTllowerListlListrLlistRllistRllistlListl>
3. Herdado da classe abstrata ApplicationObjectSupport
O abstrato Class ApplicationObjectSupport fornece o método getApplicationContext (), que pode obter facilmente o ApplicationContext. Quando a primavera for inicializada, o objeto ApplicationContext será injetado através do método SetapplicationContext (contexto ApplicationContext) da classe abstrata.
4. Herdado da classe abstrata WebApplicationObjectSupport
Use getwebApplicationContext () para obter org.springframework.web.context.webApplicationContext porque os aplicativos da Web têm mais recursos do que aplicativos comuns, o WebApplicationContext estende o ApplicationContext. WebApplicationContext define um root_web_application_attribute constante. Quando o contexto é iniciado, a instância do WebApplicationContext é colocada na lista de atributos do ServletContext com esta chave. Portanto, podemos obter diretamente o WebApplicationContext do contêiner da web através da seguinte declaração:
WebApplicationContext wac = (webApplicationContext) servletContext.getAttribute (webApplicationContext.root_web_application_context_attribute);
5. Implemente o interface ApplicationContexTAWe
Implemente o método setApplicationContext (ApplicationContext Context) desta interface e salve o objeto ApplicationContext. Quando a mola é inicializada, o objeto ApplicationContext é injetado através deste método.
O terceiro, quarto e quinto métodos exigem a configuração da classe no arquivo de configuração da primavera:
<!-Supondo que o ApplicationContextTool seja uma classe de implementação específica que herda ou implementa os terceiros, quarta e quinta métodos-> <Bean> </i Bean>
Caso contrário, o ApplicationContext não será recuperado e o NULL será devolvido.
O conteúdo acima introduz um resumo do método do feijão da primavera em Java, espero que gostem.