最佳实践是什么:使用原型 bean 而不是 new() 运算符

008*_*k89 5 java spring prototype javabeans

我试图了解 Spring 原型 bean 的正确用法是什么。可能以下代码示例将帮助您理解我的困境:

List<ClassA> caList = new ArrayList<ClassA>();
    for (String name : nameList) {
        ClassA ca = new ClassA();

    //or Shall I use protypebean, using method lookup I can inject the dependency of ClassA. 
    // ClassA ca = getPrototypeClassA();

        ca.setName(name);
        caList.add(ca);
    }
Run Code Online (Sandbox Code Playgroud)

所以我的确切观点是在这种情况下我应该使用方法注入还是 new() 运算符。为你的观点提供理由。

Ank*_*kur 4

您可以使用其中任何一种方法,因为最终客户端代码负责处理原型 bean 的生命周期,而不是 spring 容器。

根据 Spring 文档,

在某些方面,当谈论原型范围的 bean 时,您可以将 Spring 容器的角色视为 Java“new”运算符的某种替代。该点之后的所有生命周期方面都必须由客户处理。

Spring 不管理原型 bean 的完整生命周期:容器实例化、配置、装饰或以其他方式组装原型对象,将其交给客户端,然后不再了解该原型实例。客户端代码有责任清理原型作用域对象并释放原型 bean 所占用的任何昂贵资源。