系统学习Spring之Spring in action(八)

每日一叨:

    又到星期四啦,心情不错,继续努力的积累知识点咯.

文章导读:

     1.面向切面编程之注解篇

 

知识点:

 

1.面向切面编程之注解篇

  前面学习了如何用XML配置去使用SpringAOP,为了减少XML的配置,Spring还支持了AOP的注解功能.这几个注解就不多介绍了,很容易理解.

  通过事例来学习如何使用注解实现SpringAOP:

public class DrinkCoffee{
    //正在喝咖啡就是这个做例子吧
    public void drink(){
        System.out.println("咖啡真好喝." );
    }
}
@Aspect
public class Coffee {
    @Pointcut("execution(* com.ricky.zero.pojo.DrinkCoffee.drink(..))")
    public void marker(){
    }
    @Before(value = "marker()")
    public void beforeDrinkCoffee(){
        System.out.println("首先把水烧开,把咖啡粉倒入杯中,倒入适量的白开水,然后用勺子搅拌.");
    }
    
    //喝咖啡之后
    @AfterReturning(value = "marker()")
    public void afterDrinkCoffee(){
        System.out.println("咖啡太好喝了,好想在喝一杯...");
    }
    
    @AfterThrowing(value = "marker()")
    //水放少了,咖啡有点苦.
    public void somethingIsWrong(){
        System.out.println("一不小心把水放多了,味道比较淡,口感欠佳.");
    }
    
    @After(value = "marker()")
    //喝完咖啡要记得洗杯子哦.
    public void washCup(){
        System.out.println("喝完咖啡后洗杯子.");
    }
    
    //把所有步骤都放到一个方法里
    public void allInOne(ProceedingJoinPoint p){
        try {
            System.out.println("首先把水烧开,把咖啡粉倒入杯中,倒入适量的白开水,然后用勺子搅拌.");
            p.proceed();
            System.out.println("咖啡太好喝了,好想在喝一杯...");
        } catch (Throwable e) {
            // TODO Auto-generated catch block
            System.out.println("一不小心把水放多了,味道比较淡,口感欠佳.");
        }finally{
            System.out.println("喝完咖啡后洗杯子.");
        }
    }
}

XML配置文件:

    <bean id="coffee" class="com.ricky.zero.pojo.Coffee"></bean>
    <bean id="drinkCoffee" class="com.ricky.zero.pojo.DrinkCoffee"></bean>

运行测试,并得到结果如下:

首先把水烧开,把咖啡粉倒入杯中,倒入适量的白开水,然后用勺子搅拌.
咖啡真好喝.
喝完咖啡后洗杯子.
咖啡太好喝了,好想在喝一杯...

上面的事例中,最难懂的应该是marker()方法,marker方法是一个空方法,它的作用就是相当于一个标记的作用,可以把注解绑定到的这个标记上.

上面的事例是与XML配置实现的SpringAOP对应的.

这个是与XML配置实现的SpringAOP对应的第二个事例:

修改Coffee类:

@Aspect
public class Coffee {
    @Pointcut("execution(* com.ricky.zero.pojo.DrinkCoffee.drink(..))")
    public void marker(){
    }
    @Around(value = "marker()")
    //把所有步骤都放到一个方法里
    public void allInOne(ProceedingJoinPoint p){
        try {
            System.out.println("首先把水烧开,把咖啡粉倒入杯中,倒入适量的白开水,然后用勺子搅拌.");
            p.proceed();
            System.out.println("咖啡太好喝了,好想在喝一杯...");
        } catch (Throwable e) {
            // TODO Auto-generated catch block
            System.out.println("一不小心把水放多了,味道比较淡,口感欠佳.");
        }finally{
            System.out.println("喝完咖啡后洗杯子.");
        }
    }
}

运行并得到测试结果:

首先把水烧开,把咖啡粉倒入杯中,倒入适量的白开水,然后用勺子搅拌.
咖啡真好喝.
咖啡太好喝了,好想在喝一杯...
喝完咖啡后洗杯子.

 

 

SpringDI和SpringAOP到这里就结束了.关于Spring其它的知识,后天在来更新吧,,明天晚上可以轻松一下,打几局DOTA咯.

--------------------------------申明----------------------------       

                  本文可以免费阅读以及转载,转载时请注明出处.      

                  本人邮箱:Ricky_LS@163.com

                  Thank you for your corporation.

 

转载于:https://www.cnblogs.com/yjhk/archive/2013/03/28/2987621.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值