首页 > 编程语言 > 详细

[Spring Boot] Aspect Intro

时间:2019-05-14 23:36:43      阅读:236      评论:0      收藏:0      [点我收藏+]

Aspect-Oriented Programming (AOP) complements Object-Oriented Programming (OOP) by providing another way of thinking about program structure. The key unit of modularity in OOP is the class, whereas in AOP the unit of modularity is the aspect. Aspects enable the modularization of concerns such as transaction management that cut across multiple types and objects. (Such concerns are often termed crosscutting concerns in AOP literature.)

One of the key components of Spring is the AOP framework. While the Spring IoC container does not depend on AOP, meaning you do not need to use AOP if you don‘t want to, AOP complements Spring IoC to provide a very capable middleware solution. [1]

 

 

It is powerful tool, it allow you to automaticlly watching Classes execution, we can preform some opreation before it or after it. It is a little bit similar to Angular Router Guards, before we enter a router, we can use Guards to check Auth.

package com.in28minutes.spring.aop.springaop.aspect;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;

//AOP
//Configuration
@Aspect
@Configuration
public class UseAccessAspect {
    
    private Logger logger = LoggerFactory.getLogger(this.getClass());
    
    //What kind of method calls I would intercept
    //execution(* PACKAGE.*.*(..))
    
    @Before("execution(* com.in28minutes.spring.aop.springaop.business.*.*(..))")
    public void before(JoinPoint joinPoint){
        logger.info(" Check for user access ");
        logger.info(" Allowed execution for {}", joinPoint);
    }
}
package com.in28minutes.spring.aop.springaop.business;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.in28minutes.spring.aop.springaop.data.Dao1;

@Service
public class Business1 {
    
    @Autowired
    private Dao1 dao1;
    
    public String calculateSomething(){
        //Business Logic
        return dao1.retrieveSomething();
    }
}

Anytime ‘Business1‘ is running, the Aspect will kick in.

[Spring Boot] Aspect Intro

原文:https://www.cnblogs.com/Answer1215/p/10865330.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!