加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 标记为原型范围的Bean在Spring中不起作用

发布时间:2020-12-15 01:37:04 所属栏目:大数据 来源:网络整理
导读:我有两个豆,父母和孩子.子bean我已声明为Protoype范围. 我想新的子对象用于调用Parent类中的任何子方法.例如.在下面的例子中,我希望语句1调用方法sayHi对不同的子对象和语句2调用sayHi1对不同的子对象. 一种方法是在调用任何子方法之前使用context.getBean(

我有两个豆,父母和孩子.子bean我已声明为Protoype范围.
我想新的子对象用于调用Parent类中的任何子方法.例如.在下面的例子中,我希望语句1调用方法sayHi对不同的子对象和语句2调用sayHi1对不同的子对象.

一种方法是在调用任何子方法之前使用context.getBean(“”)实现ApplicationContextAware并获取新的子对象.但我不想这样做.

还有其他选择吗?

@Component
public class Parent{

    @Autowired
    Child child;

    public void sayHello(){     
        child.sayHi();           -------------- (1)
    }

    public void sayHello1(){    
        child.sayHi1();          --------------- (2)
    }
}

@Component
@Scope(value=BeanDefinition.SCOPE_PROTOTYPE)
public class Child{

    public void sayHi(){
        System.out.println("Hi Spring 3.0");

    }

    public void sayHi1(){
        System.out.println("Hi1 Spring 3.0 ");      
    }

}
最佳答案
修复只是将原型bean标记为作用域代理,这意味着当你将较小范围的bean注入较大的范围时(比如将原型注入单例中的情况)然后代理bean的注入将被注入到更大的范围中,当通过代理调用bean的方法时,代理会理解范围并将适当地做出响应.

@Component
@Scope(value=BeanDefinition.SCOPE_PROTOTYPE,proxyMode=ScopedProxyMode.TARGET_CLASS)
public class Child{

这是一个reference

另一个选择可能是使用here所述的称为查找方法注入的东西

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读