好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

在Spring中如何使用动态代理?

Spring动态代理

定义自定义切面 -  diyNodePoint

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

package com.lxc.diy;

 

import org.aspectj.lang.annotation.After;

import org.aspectj.lang.annotation.Aspect;

import org.aspectj.lang.annotation.Before;

 

/**

  * @Aspect 标注这个了是一个切面

  * @Before("切入点") === <aop:before method="beforeLog" pointcut-ref="point" />

  * @After("切入点") === <aop:after method="afterLog" pointcut-ref="point" />

  */

@Aspect

public class diyNotePoint {

    @Before ( "execution(* com.lxc.service.UserServiceImp.*(..))" )

    public void before() {

        System.out.println( "前置切面" );

    }

    @After ( "execution(* com.lxc.service.UserServiceImp.*(..))" )

    public void after() {

        System.out.println( "后置切面" );

    }

}

定义接口 - UserService

?

1

2

3

4

5

6

7

8

package com.lxc.service;

 

public interface UserService {

     public void query();

     public void delete();

     public void edit();

     public void add();

}

重写接口类 - UserServiceImp

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

package com.lxc.service;

public class UserServiceImp implements UserService{

     @Override

     public void query() {

         System.out.println( "query" );

     }

     @Override

     public void delete() {

         System.out.println( "delete" );

     }

     @Override

     public void edit() {

         System.out.println( "edit" );

     }

     @Override

     public void add() {

         System.out.println( "add" );

     }

}

beans.xml中配置:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<?xml version= "1.0" encoding= "UTF-8" ?>

<beans xmlns= "http://www.springframework.org/schema/beans"

        xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"

        xmlns:aop= "http://www.springframework.org/schema/aop"

        xmlns:context= "http://www.springframework.org/schema/context"

        xsi:schemaLocation="http: //www.springframework.org/schema/beans

         https: //www.springframework.org/schema/beans/spring-beans.xsd

         http: //www.springframework.org/schema/context

         https: //www.springframework.org/schema/context/spring-context.xsd

         http: //www.springframework.org/schema/aop

         https: //www.springframework.org/schema/aop/spring-aop.xsd">

    

     <!--定义bean-->

     <bean id= "imp" class = "com.lxc.service.UserServiceImp" />

     <bean id= "diyNotePoint" class = "com.lxc.diy.diyNotePoint" />

     <!--添加:注解支持-->

     <aop:aspectj-autoproxy />

 

</beans>

测试:

?

1

2

3

4

5

6

7

8

9

10

11

import com.lxc.service.UserService;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

 

public class Test {

     public static void main(String[] args) {

         ApplicationContext ctx = new ClassPathXmlApplicationContext( "beans.xml" );

         UserService userService = ctx.getBean( "imp" , UserService. class );

         userService.add();

     }

}

 输出如下:

到此这篇关于在Spring中如何使用动态代理?的文章就介绍到这了,更多相关Spring动态代理内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

原文链接:https://blog.csdn.net/qq_42778001/article/details/118084660

查看更多关于在Spring中如何使用动态代理?的详细内容...

  阅读:14次