ApiRunner.java 3.6 KB
Newer Older
L
lancediarmuid 已提交
1 2
package cn.noexception.test;

希川's avatar
希川 已提交
3 4 5 6 7
import cn.noexception.container.aop.AdvisedSupport;
import cn.noexception.container.aop.TargetSource;
import cn.noexception.container.aop.aspectj.AspectJExpressionPointcut;
import cn.noexception.container.aop.framework.Cglib2AopProxy;
import cn.noexception.container.aop.framework.JdkDynamicAopProxy;
L
lancediarmuid 已提交
8
import cn.noexception.container.context.support.ClassPathXmlApplicationContext;
希川's avatar
希川 已提交
9
import cn.noexception.test.bean.IUserService;
L
lancediarmuid 已提交
10
import cn.noexception.test.bean.UserService;
希川's avatar
希川 已提交
11
import cn.noexception.test.bean.UserServiceInterceptor;
L
lancediarmuid 已提交
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
import cn.noexception.test.event.CustomEvent;
import org.junit.Test;

public class ApiRunner {
    @Test
    public void test_prototype() {
        // 1.初始化 BeanFactory
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:config.xml");
        applicationContext.registerShutdownHook();

        // 2. 获取Bean对象调用方法
        UserService userService01 = applicationContext.getBean("userService", UserService.class);
        UserService userService02 = applicationContext.getBean("userService", UserService.class);

        // 3. 配置 scope="prototype/singleton"
        System.out.println(userService01);
        System.out.println(userService02);

        // 4. 打印十六进制哈希
        System.out.println(userService01 + " 十六进制哈希:" + Integer.toHexString(userService01.hashCode()));

    }

    @Test
    public void test_factory_bean() {
        // 1.初始化 BeanFactory
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:config.xml");
        applicationContext.registerShutdownHook();

        // 2. 调用代理方法
        UserService userService = applicationContext.getBean("userService", UserService.class);
        System.out.println("测试结果:" + userService.queryUserInfo());
    }

    @Test
    public void test_event() {
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:config.xml");
        applicationContext.publishEvent(new CustomEvent(applicationContext, 1019129009086763L, "成功了!"));

        applicationContext.registerShutdownHook();
    }
希川's avatar
希川 已提交
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73

    @Test
    public void test_dynamic(){
        // 目标对象
        IUserService userService = new cn.noexception.test.bean.impl.UserService();
        // 组装代理信息
        AdvisedSupport advisedSupport = new AdvisedSupport();
        advisedSupport.setTargetSource(new TargetSource(userService));
        advisedSupport.setMethodInterceptor(new UserServiceInterceptor());
        advisedSupport.setMethodMatcher(new AspectJExpressionPointcut("execution(* cn.noexception.test.bean.IUserService.*(..))"));

        // 代理对象(使用JDK代理JdkDynamicAopProxy)
        IUserService proxy_jdk = (IUserService) new JdkDynamicAopProxy(advisedSupport).getProxy();
        // 测试调用
        System.out.println("测试结果:"+proxy_jdk.queryUserInfo());

        // 代理对象(使用Cglib代理Cglib2AopProxy)
        IUserService proxy_cglib = (IUserService) new Cglib2AopProxy(advisedSupport).getProxy();
        // 测试调用
        System.out.println("测试结果:"+proxy_cglib.register("感冒灵"));
    }
74 75 76 77 78 79 80 81

    @Test
    public void test_aop(){
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:config_aop.xml");
        IUserService userService = applicationContext.getBean("userService", IUserService.class);

        System.out.println("测试结果:"+userService.queryUserInfo());
    }
L
lancediarmuid 已提交
82
}