O primeiro tipo: Configuração de anotação AOP
Configuração de anotação AOP (implementada usando a Biblioteca de Classe Apectorj), dividida aproximadamente em três etapas:
1. Use a anotação @Aspect para definir uma seção, definir o ponto de entrada (@pointcut) e o tipo de notificação (@Before,@depois de reviravoltas,@depois,@pós -arremessador,@em torno).
2. Desenvolva classes que precisam ser interceptadas.
3. Configure a seção no XML. Nesse caso, ele será gerenciado pelo recipiente da Spring AOP.
Além disso, você precisa referenciar o pacote JAR de AspectJ: ascestjweaver.jar aspectojrt.jar
Exemplo:
User.javapack com.bjsxt.model; () {Retorne senha; {public void Save (usuário do usuário);
Implementar a interface:
pacote com.bjsxt.dao.impl; Void Save (usuário do usuário) {System.out.println ("Usuário salvar11d!");
Classe de operação:
pacote com.bjsxt.service; importar com.bjsxt.dao.userdao; ; userdao;
Junte -se à AOP
pacote com.bjsxt.aop; Aspecto; . .model .User)) ")*/ @Before (" myMethod () ") public vazio antes () {System.out.println (" Method staet ");} @after (" myMethod () ") vazio público depois () {System.out.println ("Método depois"); .println ("Método depois de retornar"); ");}}
Arquivo de configuração
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org /2001/xmlschema-Instance "xmlns: context =" http://www.springframework.org/schema/Context "xmlns: aop =" http://www.springframework.org/sche/scoc scop " "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema //www.springframework.org/schema/Context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://ww.springframework.org/sc hema/aop/spring-ap/spring--/ww.springframework -3.1 .xsd "> <!-para adicionar as duas últimas linhas-> <Contexto: anotação-config /> <Contexto: componente-Scan-package =" com.bjsxt " /> <!-varredura automática -> <AOP: AspectJ-AutoProxy/> <!-para adicionar esta linha-> </sieva>
Classe de teste:
pacote com.bjsxt.service; Inverso do controle da classe pública Usuários ServiceTest {@Test public void testadd () lança exceção {classe de classe println (serviço.getclass ();
resultado:
Classe com.bjsxt.service.userService $$ ENIFERBYCGLIB $$ 7B201784METHOD ESTATÍSTICAS SAVE1D!
Perceber:
@Aspect: Isso significa que esta aula é uma aula de faceta
@ComPonet: Como a primavera precisa ser gerenciada como uma aula tangente, essa inicialização de classe precisa ser adicionada ao gerenciamento da primavera durante a inicialização;
@Befoe: lógica do ponto de entrada (conselho)
Execução…: Sintaxe de corte de pontos
O segundo tipo: Configuração XML AOP
O mesmo que acima: apenas o arquivo de configuração é diferente
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org /2001/xmlschema-Instance "xmlns: context =" http://www.springframework.org/schema/Context "xmlns: aop =" http://www.springframework.org/sche/scoc scop " "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema //www.springframework.org/schema/Context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://ww.springframework.org/sc hema/aop/spring-ap/spring--/ww.springframework -3.1 .xsd "> <!-para adicionar as 2 últimas linhas-> <Contexto: anotação-config /> <Contexto: componente-scan-package =" com.bjsxt " /> <bean id =" LogInterceptor "> </ Bean> <AOP: config> <aop: Pointcut Expression =" Execution (public * com.bjsxt.service .. *. Add (..)) "id =" ServicePointCut " /> <AOP: ID do aspecto = "LO Gaspect" Ref = "LogInterceptor"> <AOP: Antes do método = "Antes" Pointcut-ref = "ServicePointCut"/> </AOP: Aspect> </aOp: config> </ Beans>
A seguinte <heans> é a etiqueta de configuração da mola e várias propriedades importantes em feijão:
xmlns:
É o formato de análise de documentos XML padrão, ou seja, feijão de mola. O endereço é http://www.springframework.org/schema/beans.
Ao definir esta propriedade, todos os atributos declarados em feijões podem ser usados diretamente através de <>, como <ejé>, etc.
xmlns: xsi:
É uma especificação que o XML precisa cumprir.
xmlns: AOP:
Este é o ponto principal e são algumas especificações semânticas que precisamos usar aqui, relacionadas à AOP orientada a tangente.
xmlns: tx:
Conteúdo de configuração relacionado à transação na primavera.
Um arquivo XML pode declarar apenas uma especificação de análise semântica padrão.
Por exemplo, no XML acima, apenas um feijão é o padrão, e os outros precisam ser usados através de tags específicas, como a AOP, que possui muitos atributos. . Por exemplo, a AOP: Config acima.
Da mesma forma, se o XMLNS padrão estiver configurado com especificações de análise semântica relacionadas à AOP, você poderá escrever diretamente uma tag como a configuração no XML.
Os dois são os dois métodos de configuração do Spring AOP. Existem mais artigos sobre os métodos de configuração da Spring AOP para compartilhar com você mais tarde.