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("张三","很实惠,儿子很喜欢! ");
}
}
输出结果如下: