Respostas:
Pense em uma preocupação como um grupo de funcionalidade, por exemplo, registro, auditoria, segurança
Essas funcionalidades estão sempre presentes na maioria dos códigos, mas na verdade não vivem em nossas classes de animais-> cães - são funcionalidades que devem viver em muitas classes - são preocupações transversais .
Um ponto de junção é um local no código em que o código do aspecto é realmente executado.
Um pointcut é como dizer qual código é executado no ponto comum.
Tecelagem - é quando o compilador / sistema pega seu código normal e inclui todo o código AOP para que ele desencadeie o código correto etc. - pode pensar nisso como uma etapa extra de pré-compilação.
Um exemplo simples e compreensível é:
Esteja ciente de que a terminologia difere um pouco entre diferentes implementações e estruturas de AOP.
Cada definição se baseia nas anteriores.
Algo que incomoda (preocupa) em todos os lugares (transversal) em seu aplicativo. por exemplo, registro ou segurança
Um pedaço de código que é adicionado automaticamente antes , depois ou ambos ( ao redor ) do código existente
Application code
|
|
|
|
\|/
|
JoinPoint ----------->("before" aspect, on the way in) // just before your intercepted application code
Pointcut start--------> public String myMethod(params ...)
//your application code
Pointcut finish--------> return (foo)
JoinPoint ----------->("after" aspect, on the way out) // just after your intercepted application code
|
\|/
|
|
|
Application code
Um local na execução do código onde parte do aspecto é executada.
O ponto em que seu aspecto "se une" ao corte de ponto. Em um joinPoint "antes", você terá acesso aos parâmetros; em "joinPoint", após, você terá acesso ao valor de retorno. Se uma exceção for lançada, você pode precisar de um "try-catch-finalmente" para manipular ou lançar novamente.
O processo de adicionar aspectos em torno de um pointcut