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();
        }
    }
    
  • 相关阅读:
    10个超实用的PHP代码片段
    MySQL支撑百万级流量高并发的网站部署详解
    程序员总结:帮助你早些明白一些道理
    50个最常用的UNIX / Linux命令(结合实例)
    php.ini 核心配置选项说明
    智能指针的死穴 循环引用
    滥用vector带来的瓶颈
    JS——层的遮罩效果
    【趣】无广告看视频
    【SQLServer】远程访问数据库进行配置
  • 原文地址:https://www.cnblogs.com/dhcao/p/11244118.html
Copyright © 2011-2022 走看看