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



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


10-amaliy mashg’ulot. Aspektke-yo`naltirilgan dasturlash.
Ishning maqsadi: Aspektke-yo`naltirilgan dasturlashni o’rganish.

  • Aspect — модуль в котором собраны описания Pointcut и Advice.

    Сейчас приведу пример и окончательно все встанет (или почти все) на свои места. Все знаем про логирование кода который пронизывает многие модули, не имея отношения к бизнес коду, но тем не менее без него нельзя. И так отделяю этот функционал от бизнес кода.


  • Пример — логирование кода


  • Целевой сервис

  • @Service

  • public class MyService {


  • public void method1(List list) {

  • list.add("method1");

  • System.out.println("MyService method1 list.size=" + list.size());

  • }


  • @AspectAnnotation

  • public void method2() {

  • System.out.println("MyService method2");

  • }


  • public boolean check() {

  • System.out.println("MyService check");

  • return true;

  • }

  • }


  • Аспект с описанием Pointcut и Advice.

  • @Aspect

  • @Component

  • public class MyAspect {


  • private Logger logger = LoggerFactory.getLogger(this.getClass());


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

  • public void callAtMyServicePublic() { }


  • @Before("callAtMyServicePublic()")

  • public void beforeCallAtMethod1(JoinPoint jp) {

  • String args = Arrays.stream(jp.getArgs())

  • .map(a -> a.toString())

  • .collect(Collectors.joining(","));

  • logger.info("before " + jp.toString() + ", args=[" + args + "]");

  • }


  • @After("callAtMyServicePublic()")


  • 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