在Spring中使用/目的bean

时间:2013-05-14 13:07:20

标签: spring spring-mvc

有人可以在Spring框架上下文中概述或概述bean的用途吗?

我理解标准的Java bean(没有arg构造函数,getters / setter,经常序列化),但Spring bean的目的似乎不同。

这是一种以简单,可重复使用的方式实现Singleton设计模式(一个实例,对于类似的工厂类)的方式吗?

我主要使用带有注释的Spring,但我觉得我需要掌握这一点才能理解Spring。

谢谢!

3 个答案:

答案 0 :(得分:4)

Bean是构成应用程序主干的对象。

一个bean 只是一个 实例化汇编托管 Spring IoC容器;除此之外,bean没有什么特别之处。它在所有其他方面都是你应用程序中很多对象之一。

Spring bean在spring配置文件中定义,或者使用注释,由Spring容器实例化,然后注入到您的应用程序中。

Spring bean不会是单例设计模式,直到你明确表示它们为止。单例设计模式弹簧范围'单例' 不同< / strong> things.You可以根据您的要求定义不同的bean范围。

范围可以是:

  1. singleton - 每个Spring IoC容器返回一个bean实例
  2. prototype - 每次请求时返回一个新的bean实例
  3. request - 每个HTTP请求返回一个bean实例。
  4. session - 每个HTTP会话返回一个bean实例。
  5. globalSession - 每个全局HTTP返回一个bean实例 会话。
  6. 默认范围是单身。

答案 1 :(得分:3)

  

我理解标准的Java bean(没有arg构造函数,   getter / setters,经常序列化),但Spring bean的目的似乎   与众不同。

您的意思是始终序列化。为什么你认为目的看起来不同?

最后,你要编写课程。很多时候这些都是POJO,Plain Old Java Objects。有时你实现一个接口或扩展一个类,但它只是类。

豆类只是课程。不要过度复杂化。

现在,Spring可以通过任意一些策略(原型,单例)来接受你的bean(类)和管理它们,但这不会改变bean的含义,它会说明Spring 如何管理< / em>豆。

答案 2 :(得分:2)

为了最好地理解,您应该熟悉依赖注入。简而言之,依赖注入允许您在没有明确创建它们的情况下使用对象或服务(当然,它提供了其他好处,但让我们关注这个问题)。这是通过维护一个依赖容器来实现的 - 粗略地说 - 是一组bean。

bean是您在应用程序中使用的服务/组件。与EJB不同,使用Spring,bean不受约束构造函数参数或特定注释(特别是如果使用xml上下文)。您使用容器注册bean(通过定义上下文),当您需要它时,容器将为您提供该bean的实例。为了创建bean,容器检查其类和构造函数,并使用该上下文中的任何其他已注册bean来调用相应的构造函数或属性setter。

您可以将bean配置为 singleton - 这是设计模式术语中的单例。单例bean在容器中创建一次,并且只要从该容器请求bean,就会使用相同的实例。您还可以使用原型范围强制容器每次都创建一个新实例。