zoukankan      html  css  js  c++  java
  • @lookup注解的使用

    背景,如果有一个类C,需要用到类B,如果使用@Autowired注解注入B,那么B每次调用都是同一个对象,即使B不是单例的,现在我希望每次调用B都是不一样的,那么实现方案有2个:

    方案A : 每次从容器中获取B:

    @Component
    @Scope(scopeName= ConfigurableBeanFactory.SCOPE_PROTOTYPE) //原型 也就是非单例
    public class B {
        public  void sayHi(){
            System.out.println("hi");
        }
    }
    @Component
    public  class C implements ApplicationContextAware {
        private ApplicationContext applicationContext;
        public void hello(){
            B b = (B)applicationContext.getBean("b");
            b.sayHi();
        }
    
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            this.applicationContext=applicationContext;
        }
    }

    方案B: 使用@lookup注解:

    @Component
    @Scope(scopeName= ConfigurableBeanFactory.SCOPE_PROTOTYPE) //原型 也就是非单例
    public class B {
        public  void sayHi(){
            System.out.println("hi");
        }
    }
    
    @Component
    public abstract class C {
    
        public void hello(){
            B b = getB();
            b.sayHi();
        }
    
        @Lookup
        public abstract B getB(); //一般都是抽象方法
    }
  • 相关阅读:
    Go 学习之旅
    IdentityServer4 3.1.x 迁移到 4.x
    Redash 二开
    frp 内网穿透远程桌面(Windows 10)配置
    Redash 二开
    Redash 二开
    Nginx 强制 HTTPS 配置
    ASP.NET Core 奇淫技巧之SPA部署
    .NET Core 对接微信小程序数据解密
    19c生产enq: FB
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/13428067.html
Copyright © 2011-2022 走看看