Spring AOP实现方式(配置)

1.pom.xml

<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.8.9</version>
</dependency>

...其他spring dependency

2.UserService.java

public class UserService {

    public String saveUser(String text){
        System.out.println("###调用saveUser方法####");
        return text;
    };

    public String update(String text){
        System.out.println("###调用update方法####");
        return text;
    };

    public String delete(String text){
        System.out.println("###调用delete方法####");
        return text;
    };
}

3. Advices.java

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
//通知者
public class Advices {

    //在目标方法之前执行
    public void before(JoinPoint joinPoint){
        System.err.println("Before ...");
    }

    //在目标方法之后执行
    public void after(JoinPoint joinPoint){
        System.err.println("After ...");
    }

    //在目标方法返回之后执行
    public void afterReturning(JoinPoint joinPoint){
        System.err.println("afterReturning ...");
    }

    public void around(ProceedingJoinPoint joinPoint){
        System.err.println("around ...");
    }
}

4.context.xml

<bean id="userService" class="com.ecs.AOP.UserService" >
    </bean>

    <bean id="advices" class="com.ecs.AOP.Advices" >

    </bean>
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
    <aop:config proxy-target-class="true" >
        <aop:aspect ref="advices" >
            <aop:pointcut expression="execution(* com.ecs.AOP.UserService.save*(..) or
                                      execution(* com.ecs.AOP.UserService.update(..)) or 
                                      execution(* com.ecs.AOP.UserService.delete(..))" id="pointcut1"/>
            <aop:before method="before" pointcut-ref="pointcut1"/>
            <aop:after method="after" pointcut-ref="pointcut1"/>
        </aop:aspect>
    </aop:config>

5.Test

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:servlet-context.xml","classpath:applicationContext.xml"})
@WebAppConfiguration
public class UnitTest {

    @Autowired
    private WebApplicationContext wac;

    @Test
    public void test(){
        try {
            UserService userService = wac.getBean(UserService.class);
            String text = userService.saveUser("hello");
            System.err.println(text);
        } catch (BeansException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值