1. Anotações personalizadas de Java e primavera
As anotações Java, como uma espécie de metadados, as informações dos elementos do programa (classes, variáveis de membros, métodos de membros etc.), não têm impacto na execução do próprio programa. Por meio de anotações personalizadas, você pode adicionar declarações especiais aos elementos do programa.
Como uma plataforma para a construção de aplicativos em nível empresarial, a Spring fornece funções ricas. A combinação de anotações personalizadas de Java com a primavera para implementar a análise e o processamento de anotações em cenários específicos pode reduzir o grau de acoplamento de aplicativos e melhorar a escalabilidade do programa.
2. Cenários de aplicação
A seguir, resume vários cenários de aplicação e explica apenas a idéia geral (PS: nem todos os cenários foram praticados no projeto)
2.1 login, bloqueio de permissão
Nos projetos da Web, a interceptação de login e a interceptação de permissão são uma função clichê. Através de anotações de login personalizadas ou anotações de permissão, as anotações de análise no interceptador personalizado para realizar funções de login e interceptação de permissão.
Esse método de uso possui configuração simples, alta flexibilidade e baixo acoplamento de código.
2.2 Gerenciamento de tarefas de tempo
Durante o processo de construção do sistema, haverá vários requisitos de tarefas cronometradas e o gerenciamento centralizado de tarefas cronometradas pode manter com mais eficiência a operação do sistema.
As anotações de tarefas de tempo personalizadas no capítulo de repetentanções do documento oficial de anotação Java pode realizar a declaração de tarefas de tempo dos métodos de negócios. Combinado com o pós -processador de contêiner da primavera BeanPostProcessor (PS: o pós -processador de contêineres da primavera será discutido no próximo artigo), analisando anotações personalizadas. As informações de anotação analisada são usadas para criar a tarefa de tempo de execução usando o Quartzapi, que pode concluir a criação de tempo de execução e o gerenciamento centralizado da tarefa de tempo.
Este método pode evitar definir a configuração das tarefas de tempo de quartzo e melhorar a escalabilidade do sistema.
2.3 Especificação da fonte de dados para roteamento de origem de vários dados
AbstractroutingDataSource fornecido pelo Spring implementa o roteamento dinâmico de múltiplas fontes de dados e pode ser aplicado sob uma arquitetura de separação de escravos mestre. Ao especificar diferentes fontes de dados para diferentes métodos, o roteamento dinâmico de fontes de dados é realizado (por exemplo: os métodos de leitura são provenientes da fonte de dados do banco de dados escravos, os métodos de escrita vão da principal fonte de dados do banco de dados). Como identificar o tipo de fonte de dados correspondente a diferentes métodos pode ser implementado usando anotações personalizadas. A função de roteamento da fonte de dados é realizada analisando o tipo de fonte de dados correspondente declarado no método.
Este método evita a análise de métodos de correspondência de padrões (por exemplo: começando com selecionar, começar com atualização etc.), e a declaração é mais flexível.
Anotações personalizadas
Vamos dar uma olhada no exemplo mais simples. No processo de usar aplicativos Springweb, usamos inevitavelmente @Controller, @service, @repository e outras anotações para definir Javabeans. Então, como você pode definir uma anotação? A mola pode carregar automaticamente. Portanto, há o primeiro exemplo.
@Target ({elementType.type})@retention (retentionpolicy.runtime)@documentado@componentpublic @interface myComponent {string value () padrão "";} @ConfigurationPublic Class ComponentannotationTest {public static void main (string [] args) {anotationConfigApplicationContext anoTationConfigApplicationContext = new ANNOTATIONCONFIGAPPLICATIONCONTEXT (); anotationCigApglicationContext.register (componentannOtationstationstation (); anoTationConfigApplicationContext.Refresh (); InjectClass injectClass = anoTationConfigApplicationContext.getBean (injectClass.class); injectClass.print (); } @MyComponent public static classe injectClass {public void print () {System.out.println ("Hello World"); }}}Execute este exemplo e você descobrirá que a classe anotada pelo @MyComponent também é carregada na primavera e pode ser usada normalmente como um Javabean comum. Verificando o código -fonte da Spring, você descobrirá que a primavera usa o ClassPathnningCandIdAtComponentProvider para digitalizar o pacote. Esta classe tem essa anotação.
Um provedor de componentes que digitaliza o caminho de classe de um pacote básico. Em seguida, ele se aplica excluir e incluir filtros às classes resultantes para encontrar candidatos.
O método RegisterDefaultFilters desta classe possui várias linhas de código
Protected void RegisterDefaultFilters () {this.includeFilters.add (novo anotationTyPefilter (component.class)); ClassLoader cl = ClassPathScanningCandIdAtecomponentProvider.class.getClassLoader (); tente {this.includefilters.add (novo anotationTypefilter ((((classe <? Extends anotação>) classutils.forname ("javax.annotation.managedbean", cl)), false)); Logger.debug ("JSR-250 'javax.annotation.managedbean' encontrado e suportado para varredura de componentes"); } Catch (ClassNotFoundException Ex) {// JSR -250 1.1 API (como incluído em Java EE 6) não está disponível - basta pular. } tente {this.includefilters.add (novo anotationTypefilter ((((classe <? Extende a anotação>) classutils.ForName ("javax.inject.Named", cl)), false)); Logger.debug ("JSR-330 'javax.inject.Named' Anotation Encontrado e suportado para varredura de componentes"); } Catch (ClassNotFoundException Ex) {// JSR -330 API não disponível - Basta pular. }}Aqui você descobrirá que o uso das informações da aula de digitalização pela primavera apenas julgará a classe anotada pelo @Component, para que qualquer anotação personalizada possa ser digitalizada pela primavera e injetada no contêiner, desde que esteja equipado com @Component (é claro, deve haver um valor de string () padrão ""; porque o método da primavera é uma marca de spring).
Resumir
O exposto acima é tudo sobre a breve discussão deste artigo sobre a aplicação de anotações personalizadas na primavera, 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!