有人可以在Spring框架上下文中概述或概述bean的用途吗?
我理解标准的Java bean(没有arg构造函数,getters / setter,经常序列化),但Spring bean的目的似乎不同。
这是一种以简单,可重复使用的方式实现Singleton设计模式(一个实例,对于类似的工厂类)的方式吗?
我主要使用带有注释的Spring,但我觉得我需要掌握这一点才能理解Spring。
谢谢!
答案 0 :(得分:4)
Bean是构成应用程序主干的对象。
一个bean 只是一个 实例化,汇编,托管 Spring IoC容器;除此之外,bean没有什么特别之处。它在所有其他方面都是你应用程序中很多对象之一。
Spring bean在spring配置文件中定义,或者使用注释,由Spring容器实例化,然后注入到您的应用程序中。
Spring bean不会是单例设计模式,直到你明确表示它们为止。单例设计模式和弹簧范围'单例' 不同< / strong> things.You可以根据您的要求定义不同的bean范围。
范围可以是:
默认范围是单身。
答案 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,就会使用相同的实例。您还可以使用原型范围强制容器每次都创建一个新实例。