2010-11-14 58 views
0

我没有太多的使用Spring,所以我可能会失去一些明显的东西。无论如何,这是一个问题:春天,从反序列化中创建一个bean

假设你有一个Spring管理bean,它是一个网络客户端。在你调用一个方法后,你会得到一些对象,说它是一个列表

现在我想处理该List到对我的应用程序的其余部分更有用的东西,称它是MyBusinessBean类型。

如何避免做

new MyBusinessBean(List<String> info) 

?如果我这样做,它会变成一个不属于上下文的对象。

我做这样的事情:

MyBusinessBean myBean = (MyBusinessBean) applicationContext.getBean("myBusinessBean", info); 

但是我继续阅读无处不在,这是不正确完成,因为我在做我的代码上下文感知的东西的信号。 Spring的正确方法是什么?

回答

2

第二种方法是你在春天做什么。调用“新”意味着你打破了模型。

但是,不要认为每个对“新”的调用都会被Spring取消。每个对象都不需要受Spring的控制。有时你只需要调用“新”,通常在单一方法的范围内。创建对象,使用它,GC - 不需要Spring bean工厂。

如果您希望在应用程序中为对象提供序列化后访问该列表的权限,只需传递该引用即可。在你描述的情况下,你不需要Spring bean工厂,因为你已经从服务器获得序列化的对象。

+0

我创建myBean后不再需要列表。我只是感到困惑,因为如果我想单元测试获取List的类并将myBean添加到上下文中,我现在需要将测试上下文注入到单元测试中,并且Spring文档说我的对象应该是可测试的而不需要Spring或任何其他容器。我认为这在Web应用程序中必定非常普遍,当请求到来时,您需要从请求中创建对象。 – 2010-11-14 17:34:09

+0

我知道在方法范围内创建对象是可以的,但是这是一个对象,我需要传递很多类。 – 2010-11-14 17:40:42

+0

“...创建myBean后不需要列表...” - 对不起,我没有关注你。您的评论涉及测试和网络应用程序。这是什么?你最关心哪个问题? – duffymo 2010-11-14 18:44:16