Spring Aop----用idea实现面向切面编程

1.准备工做

       1.1 准备jar包

            

2.基于xml的aop实现

        2.1建立项目

            

          2.2建立类

                 2.2.1建立Book类 


public class Book {
    public void add(){
        System.out.println("Book里面的add方法");
    }
}

                2.2.2建立MyBook类

public class MyBook {

    public void before1(){
        System.out.println("MyBook中的before方法");
    }
}

                2.2.3在xml上面添加

<bean id="book" class="com.xiaobo.aop.Book"></bean>
<bean id="myBook" class="com.xiaobo.aop.MyBook"></bean>
<!--配置aop操做-->
<aop:config>
    <!--配置切入点-->
    <aop:pointcut id="point1" expression="execution(* com.xiaobo.aop.Book.*())"  ></aop:pointcut>

    <!--配置切面
    把加强用到方法后面
    -->
    <aop:aspect ref="myBook">
        <!--配置加强类,method为加强类中哪一个方法为前置-->
        <aop:before method="before1" pointcut-ref="point1"></aop:before>
    </aop:aspect>
    <aop:aspect ref="myBook">
        <!--配置加强类,method为加强类中哪一个方法为前置-->
        <aop:after method="before1" pointcut-ref="point1"></aop:after>
    </aop:aspect>
</aop:config>

             2.2.4进行测试

@Test
public void testaop(){
    ApplicationContext context=new ClassPathXmlApplicationContext("bean2.xml");
    Book book = (Book) context.getBean("book");
    book.add();
}    

               2.2.5结果

3.基于注解的方式

        3.1新建一个xml文件,添加以下代码,开启注解;

<!--配置对象-->

    <bean id="book" class="com.xiaobo.aop.Book"></bean>
    <bean id="myBook" class="com.xiaobo.aop.MyBook"></bean>
    <!--一句话自动开启注解aop操做-->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

        3.2建立类

//定义切面
@Aspect
public class Book {

    //定义要以特定加强的方式的加强方法,book先执行
    @Before(value = "execution(* com.xiaobo.aop.MyBook.*(..))")
    public void add(){
        System.out.println("Book里面的add方法");
    }
}
public class MyBook {

    public void before1(){
        System.out.println("MyBook中的before方法");
    }
}

        3.3进行测试

@Test
public void testaop2(){
    ApplicationContext context=new ClassPathXmlApplicationContext("bean3.xml");
    MyBook book = (MyBook) context.getBean("myBook");
    book.before1();
}

         3.4结果

相关文章
相关标签/搜索