春豆是什么?
我还没有find我能理解的Spring bean的高级定义。 我经常在Grails文档和书中看到他们,但是我认为理解它们是有益的。 那么Spring bean是什么? 他们如何使用? 他们与dependency injection有关吗?
构成应用程序的骨干并由Spring IoC容器pipe理的对象称为bean。 bean是一个实例化,组装并由Spring IoC容器pipe理的对象。 这些bean是使用您提供给容器的configuration元数据创build的,例如,以XML定义的forms。
更多来从SpringSource学习bean和范围:
当你创build一个bean定义的时候,你实际上正在创build的是一个创build由这个bean定义定义的类的实际实例的方法。 bean定义是一个配方的想法是很重要的,因为这意味着,就像一个类一样,你可能有很多从一个配方创build的对象实例。
您不仅可以控制要插入到从特定的bean定义创build的对象中的各种依赖项和configuration值,还可以控制从特定的bean定义创build的对象的范围。 这种方法非常强大,使您可以灵活地select通过configuration创build的对象的范围,而不必在Java类级别“烘烤”对象的范围。 豆可以被定义为被部署在许多范围之一中
Spring bean只是由Spring容器pipe理的对象实例,即它们是由框架创build和连接的,并放入一个“包对象”(容器)中,以便稍后可以获取它们。
“布线”部分就是什么dependency injection是关于什么的,意思是说你可以说“我会需要这个东西”,框架将遵循一些规则来给你一个正确的例子。
对于一个不习惯Spring的人来说,我认为维基百科Spring的文章有一个很好的描述 :
Spring框架的核心是控制容器的反转,它提供了使用reflection来configuration和pipe理Java对象的一致方法。 容器负责pipe理特定对象的对象生命周期:创build这些对象,调用它们的初始化方法,以及通过将它们连接在一起来configuration这些对象。
由容器创build的对象也称为托pipe对象或bean 。 可以通过加载XML文件或检测configuration类上的特定Java注释来configuration容器。 这些数据源包含提供创buildbean所需信息的bean定义。
对象可以通过依赖查找或dependency injection获得 。 依赖查找是调用者向容器对象请求具有特定名称或特定types的对象的模式。 dependency injection是一种模式,其中容器通过构造函数,属性或工厂方法将对象按名称传递给其他对象。
那么你理解它的一部分。 您必须根据您的需要量身定制豆类,并通过使用Martin Fowler (也称为dependency injection) (DI)创build的普遍称为IoC( 控制反转 )的方法,通知Spring容器在需要时进行pipe理。
你以某种方式连接bean,这样你就不必关心实例化或评估对bean的依赖。 这就是众所周知的好莱坞原则 。
谷歌是最好的工具,除了在这个问题上你会被淹没的链接之外,还有更多的探索。 🙂
Spring有装有Bean的Bag的IoC容器; 创build维护和删除是Spring Container的职责。 我们可以通过布线和自动布线把豆子放到弹簧上。 布线意味着我们手动将其configuration到XML文件中,“自动布线”意味着我们把注释放在Java文件中,然后Spring会自动扫描其中的javaconfiguration文件的根上下文,并将其放入Spring的包中。
这里是详细的URI,你可以得到更多关于Beans的信息
JAVA bean
Java Bean是一个Java类,应遵循以下约定:
- 它应该有一个无参数的构造函数。
- 它应该是可序列化的。
- 它应该提供方法来设置和获取属性的值,称为getter和setter方法。
让我们了解Spring bean
春豆
Spring Bean没什么特别之处,我们通过Spring容器初始化的Spring框架中的任何对象都称为Spring Bean。 任何普通的Java POJO类都可以是一个Spring Bean,如果它被configuration为通过提供configuration元数据信息通过容器进行初始化的话。
简单的豆子
public class Triangle { private String name; //private member variable public Triangle() { // It should have a no-arg constructor } public String getName() { return name; } public void setName(String name) { this.name = name; } public void sayHello(){ System.err.println(getName() + " hello"); } }
IOC容器通过元数据(spring.xml)文件pipe理bean的生命周期
我的spring.xml
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id ="t" class= "com.ved.spring.springmaven.Triangle"> <property name="name" value="ved prakash"></property> </bean> </beans>
我试图用最简单的方式来演示
豆是spring的核心。 它们是由Spring实例化和pipe理的标准Java对象。
豆主要用于:
- 以某种方式configurationSpring(数据库连接参数,安全性等)
- 避免使用dependency injection来硬编码依赖,以便我们的类保持自包含和单元可testing性
-
Spring bean只是Spring IOC容器pipe理的对象实例。
-
Spring IOC容器携带Bean.Bean的创build,维护和删除是Spring Container的职责。
-
我们可以通过布线和自动布线把豆子放到弹簧上。
-
接线意味着我们手动将其configuration到XML文件中。
-
Auto Wiring的意思是我们把注释放在Java文件中,然后Spring自动扫描javaconfiguration文件的根上下文,把它放到Spring的包里。
spring豆类是类。 不是实例化一个类(使用new
),而是从应用程序上下文中获得一个实例作为一个bean
转换为您的类types,其中的bean是您在应用程序上下文configuration中configuration的。 这样,整个应用程序就可以维护整个应用程序的单例范围实例。 在应用程序上下文实例化后,所有的bean都按照其configuration顺序进行初始化。 如果在应用程序中没有获取任何bean,那么所有的bean实例在创build应用程序上下文后就已经创build。
在Spring中,构成应用程序主干的那些由Spring IoC容器pipe理的对象称为bean。 一个bean只是一个被Spring IoC容器实例化,组装和pipe理的对象。
对于Spring来说,所有的对象都是bean! Spring框架的基本步骤是
将你的对象定义为bean。 豆只不过是对象实例而已
由Spring框架通过查看它们的类定义来创build。 这些定义
基本上形成configuration元数据。 该框架然后创build一个计划
对象需要实例化,哪些依赖关系需要设置和注入,
新创build的实例的范围等等,基于这个configuration元数据。
元数据可以用简单的XML文件提供,就像在
第一章。 另外,还可以提供元数据
注释或Javaconfiguration。
书: 只是spring