AspectJ descreve tangente e aprimoramento por meio de anotações.
1 Requisitos de ambiente de desenvolvimento
Como você deseja usar anotações, verifique se está usando o Java 5.0 e acima.
Introduce Biblioteca de classe relacionada a aspectos:
<Depencency> <PuerpId> org.aspectj </frugiD> <stifactId> ascestjrt </ArtifactId> <Versão> $ {Apeccestj.version} </sipers> </dependency> <pendency> <purfactId> org.aspectj </groupid> <Artifactid> AscestJweaver </ArtifactId> <Versão> $ {AspectJ.version} </versão> </dependency> <pendency> <voundid> org.aspectj </groupiD> <TRATIFACTID> aspectojtools </artifactId> <sipers> $ {ASPCETJ.VERSION} </Version> </dependency> <Pepency> <PripId> Org.aspetj <rUerpStJ <rUerpy> <fstency> <PepTency> <PepTy> <fsteacTJ.IspJ.Ispectj <rUerps> <rUerpy> <fspspEncy> <PepTency> <PepStJ) <fstency> <spectJ.IspJ.Ispectj <rument> art. <Versão> $ {AspectJ.version} </Version> </dependency> <pendency> <voundid> AOPALLIANCE </GroupId> <TRAFACTID> AOPALLIANCE </STIFACTID> <Versão> $ {AOPALLIANCE.VERSION} </sipers> </dependency> 2 métodos de programação
@Aspecto // identificar facetas
public }}
Esta seção é apenas um pojo comum, mas a anotação @aspect é adicionada.
@Before("execution(* rent(..))") significa que o tipo @Before é um aprimoramento pré-aprimorado, e seu conteúdo é uma expressão de corte de pontos @aspect. Aqui significa que o aprimoramento está tecendo no método de aluguel () da classe de destino. Rent () pode conter todos os parâmetros recebidos e qualquer valor de retorno.
Não é muito conveniente para uma aula com @Aspect integrar o ponto tangente, o tipo de aprimoramento e a lógica cruzada aprimorada através da anotação e código? O (∩_∩) o haha ~
Testes de unidade:
AspectJProxyFactory Factory = new AspectJProxyFactory (); // Defina a classe de destino Factory.SetTarget (new User ()); // Adicione o Facet Class Factory.addaspect (prerentaspect.class); proxy do usuário = fábricas.GetProxy (); Usuário;
Resultado da saída:
-iniciar a ação de aluguel-
Usuário: Rental [Power Bank]
Usuário: retornar [Power Bank]
3 Método de configuração
<!-classe de destino-> <bean id = "user"/> <!-face classe-> <bean/> <!-Criar automaticamente agente-> <bean/>
Testes de unidade:
ApplicationContext Context = novo ClassPathXMLApplicationContext (spring.xml "); usuário do usuário = (usuário) context.getBean (" user "); string userid =" 001 "; user.rent (userID); user.back (userID);A saída é exatamente a mesma do programa.
Também pode ser configurado com base no espaço de nome da AOP do esquema:
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd "> <!-ASCORTJ Drive-> <aop: ASCETJ-AUTOPROXY/> <! <Bean/> </ Beans>
Essa configuração é mais simples. De fato, o modo de proxy automático foi adotado em <aop:aspectj-atuoproxy/> o (∩_∩) o haha ~
proxy-target-class de <aop:aspectj-atuoproxy/> é falsa por padrão, indicando que o aprimoramento é tecido usando a tecnologia JDK Dynamic Proxy; Se esse valor for verdadeiro, indica que o aprimoramento será tecedado usando a tecnologia de proxy dinâmica do CGLIB. Se a classe de destino não declarar a interface, mesmo que proxy-target-class seja definida como falsa, o aprimorado yo o (∩_∩) o haha ~
Para projetos baseados no Java 5.0+, é recomendável usar as aspectos para configurar o corte e o aprimoramento de pontos, porque isso é mais simples e mais direto.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.