Como todos sabemos, AspectJ pode ser melhorada através de pontos de ligação @ Antes, @ Depois, @ Cerca tais como anotação, hoje jogamos novo comentário @DeclareParents. Um novo método para aumentar o objecto alvo.
- introdução Cena:
Agora nós temos uma classe de pato animal, que tem uma função para nadar, mas de repente um dia precisamos implementar um delicioso atributo ingredientes para animais patos. Nós certamente pode ir classe animal pato para adicionar um método, mas ao contrário do único princípio. Podemos alcançar reforçada por AOP.
- Código hora do show
Há uma interface animal
pública interface de animal { vazio mergulho (); }
mais um animal classe de implementação pato
@Repository ( "Animal" ) público classe DuckAnimal os implementos Animais { @Override pública vazio Swim () { System.out.println ( "pato ... gostam de nadar" ); } }
Requerem um método melhorado para alcançar um pato é uma deliciosa comida
pública interface de Alimentos { vazio COMER (); } @Repository ( "Food" ) público classe DuckFood os implementos Food { @Override pública vazio COMER () { System.out.println ( "pato olhar saboroso ..." ); } }
injeção automática
@ComponentScan ( "com.zjt.springboot.DeclareParents" ) @Configuration @EnableAspectJAutoProxy pública classe AppConfiguration { }
Declarando um aspecto
@Aspect @Component pública classe MyAspect { / ** * com.zjt.springboot.DeclareParents.Animal + representa todos subclasse valorização do animal * * = DuckFood.class defaultImpl representa um novo padrão de classe para adicionar * / as @DeclareParents (valor = " . com.zjt.springboot.DeclareParents.Animal +", defaultImpl = DuckFood classe ) pública estática Food Alimentos; }
Depois há a parte emocionante do teste:
público classe Teste { pública estáticos vazios principais (String [] args) { contexto AnnotationConfigApplicationContext = new AnnotationConfigApplicationContext (AppConfiguration. classe ); Animal = (animal) context.getBean ( "animal" ); animal.swim (); Food alimentos = (Food) animal; food.eat (); } }
Os resultados do teste:
Patos como a natação. . .
Patos olhar bom para comer. . .
Conclusão: A partir dos resultados dos testes, descobrimos que somente um Patos animais adquiridos a partir do recipiente, mas você pode obter os ingredientes conjunto de recursos e melhorias!