Java 在spring中创建n个bean实例
在一次采访中,我问了一个问题,即只创建任意bean的n个(固定数量)实例。如果在运行时尝试创建n个以上的实例,则抛出任何异常或打印消息。提前感谢通过提供自定义bean工厂,可以轻松控制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中使用列表和非标准构造函数来实现这一点,但我将使用工厂模式: 给我这个豆子 您可以像这样创建一个
工厂(在同一个包中!)
输出:
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;
}