zoukankan      html  css  js  c++  java
  • lookup-method 和 @Lookup

    lookup-method

    lookup-method为抽象方法指定返回类型,会为标记了lookup-method的方法生产代理类来处理返回类,所以就算是个抽象类,依然可以使用,毕竟真正调用的是代理类。

    定义bean

    public class User {
        public void showMe(){
            System.out.println("i am user");
        }
    }
    
    // 子类1
    public class Teacher extends User {
    
        @Override
        public void showMe() {
            System.out.println("i am teacher");
        }
    }
    
    // 子类2
    public class Student extends User {
    
        @Override
        public void showMe() {
            System.out.println("i am student");
        }
    }
    
    // 使用环境
    public abstract class TestLookup {
    
        public abstract User getBean();
    
        public void show(){
            this.getBean().showMe();
        }
    }
    

    配置xml

    // xml配置
      <bean id="testLookup" class="org.dhcao.relax.spring.lookup.TestLookup">
        <lookup-method name="getBean" bean="student"></lookup-method>
      </bean>
    
      <bean id="teacher" class="org.dhcao.relax.spring.lookup.Teacher"></bean>
      <bean id="student" class="org.dhcao.relax.spring.lookup.Student"></bean>
    

    使用结果

    // 效果
    public class Main {
        public static ApplicationContext context = null;
        public static void main(String[] args) {
            context = new ClassPathXmlApplicationContext("spring-context.xml");
            lookup();
        }
    
        public static void lookup(){
            TestLookup bean =(TestLookup) context.getBean("testLookup");
            bean.show();
        }
    }
    

    七月 25, 2019 12:00:47 下午
    i am student

    @Lookup

    是lookup-method的注解版本,在方法或者抽象方法上使用@Lookup注解,将会根据该方法的返回值,自动在BeanFactory中调用getBean()来注入该Bean。

    public abstract class TestLookup {
    
        @Lookup
        public abstract Teacher getBean();
    
        public void show(){
            this.getBean().showMe();
        }
    }
    
  • 相关阅读:
    软件测试的方法
    常用的adb
    正则表达式
    Python学习笔记(九)————进程和线程
    CodeForces
    华为FusionSphere openstack安装
    华为FusionCompute单节点安装教程--VRM主机的安装
    华为FusionCompute单节点安装教程--CNA主机的安装
    华为FusionSphere--存储管理
    华为FusionSphere--架构介绍
  • 原文地址:https://www.cnblogs.com/dhcao/p/11244118.html
Copyright © 2011-2022 走看看