如何在singleton bean中引用原型bean?

时间:2014-11-17 17:09:30

标签: java spring dependency-injection frameworks

假设我们正在使用spring ro创建对象。我们已将A类声明为单例,并且它引用了B,它位于原型范围内。在这种情况下,B也充当A对象的单身人士。如果我们使用A(当调用A时),如何创建新的B.

2 个答案:

答案 0 :(得分:0)

这不能通过依赖注入/控制反转来处理。看看Method Injection概念。

答案 1 :(得分:0)

您可以为此使用查找方法注入。 让我们举个例子:

@Component
@Scope("singleton")
public abstract class StudentInfo {
    @Value("girraj")
    private String firstName;
    @Value("gupta")
    private String lastName;
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    @Lookup
    public abstract Address getAddress();

    @Override
    public String toString() {
        return "StudentInfo [firstName=" + firstName + ", lastName=" + lastName + ", address=" + getAddress() + "]";
    }

}

这是您的学生信息课。在这里,我们将Address类作为依赖项注入,并且每次您调用时都将其注入。 StudentInfo对象将始终相同,但Address对象将是新的。这是在5.1.6版本中引入的,但是如果您使用的是Spring的旧版本,则可以使用基于XML的配置,该配置在早期版本中可用。