Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在spring中创建n个bean实例_Java_Spring_Spring Mvc - Fatal编程技术网

Java 在spring中创建n个bean实例

Java 在spring中创建n个bean实例,java,spring,spring-mvc,Java,Spring,Spring Mvc,在一次采访中,我问了一个问题,即只创建任意bean的n个(固定数量)实例。如果在运行时尝试创建n个以上的实例,则抛出任何异常或打印消息。提前感谢通过提供自定义bean工厂,可以轻松控制bean的对象创建。您可以在其中配置限制,如创建固定数量的对象 代码。您只需要管理创建了多少实例,您可以在同一个bean中使用列表和非标准构造函数来实现这一点,但我将使用工厂模式: 给我这个豆子 您可以像这样创建一个工厂(在同一个包中!) 输出: a1 a2 a3 a4 a5 Not giving instance

在一次采访中,我问了一个问题,即只创建任意bean的n个(固定数量)实例。如果在运行时尝试创建n个以上的实例,则抛出任何异常或打印消息。提前感谢

通过提供自定义bean工厂,可以轻松控制bean的对象创建。您可以在其中配置限制,如创建固定数量的对象


代码。

您只需要管理创建了多少实例,您可以在同一个bean中使用列表和非标准构造函数来实现这一点,但我将使用工厂模式:

给我这个豆子

您可以像这样创建一个
工厂
(在同一个包中!)

输出:

a1
a2
a3
a4
a5
Not giving instance
null
注意事项:

  • 如果您需要更多的安全性,只需将bean构造函数的
    getInstance
    方法添加到
    BeanTest
    类本身,并将构造函数设置为私有
    ,而不是
    受保护的
  • 您还可以创建一个方法
    销毁实例
    removeInstance
    ,以使
    工厂更具动态性

    public static synchronized boolean removeInstance(BeanTest toRemove) {
        if (list.contains(toRemove)) {
            return list.remove(toRemove);
        }
        return false;
    }
    

谢谢你的回答。我脑子里也有同样的方法,但只是想知道如何在web配置(springconfig.xml)中配置相同的方法?
public static void main(String[] args) {
    BeanTest a1 = BeanFactory.getInstance("a1");
    System.out.println(a1);
    BeanTest a2 = BeanFactory.getInstance("a2");
    System.out.println(a2);
    BeanTest a3 = BeanFactory.getInstance("a3");
    System.out.println(a3);
    BeanTest a4 = BeanFactory.getInstance("a4");
    System.out.println(a4);
    BeanTest a5 = BeanFactory.getInstance("a5");
    System.out.println(a5);
    BeanTest a6 = BeanFactory.getInstance("a6");
    System.out.println(a6);
}
a1
a2
a3
a4
a5
Not giving instance
null
public static synchronized boolean removeInstance(BeanTest toRemove) {
    if (list.contains(toRemove)) {
        return list.remove(toRemove);
    }
    return false;
}