10-amaliy mashg’ulot. Aspektke-yo`naltirilgan dasturlash. Ishning maqsadi



Yüklə 100,61 Kb.
səhifə2/5
tarix24.12.2023
ölçüsü100,61 Kb.
#191065
1   2   3   4   5
10-amaliy mashg\'ulot

public void afterCallAt(JoinPoint jp) {

  • logger.info("after " + jp.toString());

  • }

  • }


  • И вызывающий тестовый код

  • @RunWith(SpringRunner.class)

  • @SpringBootTest

  • public class DemoAspectsApplicationTests {


  • @Autowired

  • private MyService service;


  • @Test

  • public void testLoggable() {

  • List list = new ArrayList();

  • list.add("test");


  • service.method1(list);

  • service.method2();

  • Assert.assertTrue(service.check());

  • }


  • }


  • Пояснения. В целевом сервисе нет никакого упоминания про запись в лог, в вызывающем коде тем более, в все логирование сосредоточено в отдельном модуле
    @Aspect
    class MyAspect ...

    В Pointcut

  • @Pointcut("execution(public * com.example.demoAspects.MyService.*(..))")

  • public void callAtMyServicePublic() { }


  • я запросил все public методы MyService с любым типом возврата * и количеством аргументов (..)

    В Advice Before и After которые ссылаются на Pointcut (callAtMyServicePublic), я написал инструкции для записи в лог. JoinPoint это не обязательный параметр который, предоставляет дополнительную информацию, но если он используется, то он должен быть первым.
    Все разнесено в разные модули! Вызывающий код, целевой, логирование.

    Результат в консоли



    Правила Pointcut могут быть различные


  • Несколько примеров Pointcut и Advice:


  • Запрос по аннотации на методе.

  • @Pointcut("@annotation(AspectAnnotation)")


  • Yüklə 100,61 Kb.

    Dostları ilə paylaş:
  • 1   2   3   4   5




    Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©www.azkurs.org 2024
    rəhbərliyinə müraciət

    gir | qeydiyyatdan keç
        Ana səhifə


    yükləyin