Spring原生Aop的代码实现

Book Service接口


public interface BookService {
    //规定业务功能
    //购买功能
    void buy(String username, String bookName,double price);


    //评论功能
    void comment(String username ,String comments);
}

接口实现类:

public class BookServiceImpl implements BookService {

    @Override
    public void buy(String username, String bookName,double price) {
        System.out.println("购买功能的实现。。。。。。");
        System.out.println(username+"用户购买了"+bookName+"这本书花费了"+price+"元。");
        System.out.println("购买功结束。。。");
    }

    @Override
    public void comment( String username ,String comments) {
        System.out.println("评论功能的实现");
        System.out.println(username+"发表了:"+comments+"的评论..");
        System.out.println("评论功能结束。。。");
    }
}

日志系统:

public class LogAdvice implements MethodBeforeAdvice {
    @Override
    public void before(Method method, Object[] objects, Object target) throws Throwable {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(
                "\n[日志系统]" + sdf.format(new Date()) + "----" + method.getName()+ Arrays.toString(objects)
        );
    }
}

xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--创建业务对象-->
    <bean id="bookServiceTarget" class="com.bjpower.service.impl.BookServiceImpl"></bean>

    <!--创建切面对象-->
    <bean id="logAdvice" class="com.bjpower.advice.LogAdvice"></bean>

    <!--绑定业务和切面-->
    <bean id="bookService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <!--配置业务接口-->
        <property name="interfaces" value="com.bjpower.service.BookService"></property>
        <!--配置切面-->
        <property name="interceptorNames">
            <list>
                <value>logAdvice</value>
            </list>
        </property>

        <!--织入-->
        <property name="target" ref="bookServiceTarget"></property>
    </bean>
</beans>

测试类代码:

package com.bjpower;

import com.bjpower.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test01 {
    @Test
    public  void test01(){
        ApplicationContext ac =new ClassPathXmlApplicationContext("applicationContext.xml");
        BookService proxy = (BookService) ac.getBean("bookService");
        proxy.buy("张三","平凡的世界",12.6);
        System.out.println("-----------------");
        proxy.comment("张三","很实惠,儿子很喜欢! ");
    }

}

输出结果如下:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值