我還沒有找到我能理解的Spring bean的高級定義。我經常在Grails文檔和書中看到它們,但我認爲理解它們是有益的。那麼Spring bean是什麼?他們如何使用?他們與依賴注入有關嗎?春豆是什麼?
春豆是什麼?
回答
由Spring IoC容器管理的構成應用程序主幹和 的對象稱爲bean。一個bean是一個 對象,該對象被一個 Spring IoC容器實例化,組裝和管理。使用您提供給容器的配置元數據 創建這些bean,例如,以 XML定義的形式創建。
更多瞭解豆類和範圍從SpringSource:
當你創建一個bean定義,你實際上是創建的是一個 食譜創建由該bean 定義指定的類的實際實例。 bean定義是一個配方的想法很重要,因爲它意味着,就像一個類一樣,您可能會從單個配方創建多個對象實例。
可以控制不僅各種依賴和配置 值將要被插入到從一01特定bean定義創建的對象,而且對象的範圍從一個特定的bean定義創建 。這種方法非常強大,並且允許您靈活地選擇通過配置創建的對象的範圍,而不必在Java類級別對象的範圍 中「烘烤」。豆類可以被定義爲 部署在多個領域
因此,這些是容器管理的對象,我不需要觸及,但是如果我想要訪問一個bean來調用某些方法或檢索屬性,那麼我可以「問」Spring的bean嗎? – grantmcconnaughey
一個鏈接可能會有所幫助:http://www.springsource.org/spring-framework – cjstehno
@grantmc是你想通過容器處理的對象,他們的創建他們的retreival等 –
的Spring bean的一個只是對象由Spring容器管理的情況下,即,它們被創造和框架有線和投入「袋子的對象「(容器),從那裏你可以得到他們。
「佈線」部分是什麼依賴注入的全部內容,它意味着你可以說「我會需要這個東西」,框架將遵循一些規則來爲你提供正確的實例。
有人誰不是用來春天,我覺得Wikipedia Spring's article has a nice description:
中央Spring框架是其控制容器的反轉, 提供使用配置和管理Java 對象的一致方法反射。該容器負責管理特定對象的對象生命週期:創建這些對象,調用 其初始化方法,以及通過將它們連接在一起來配置這些對象。在容器創建
對象也被稱爲管理對象或 豆。通過加載XML文件或檢測配置類上的特定Java註釋來配置容器。這些 數據源包含提供創建bean所需的信息的bean定義。
對象可以通過依賴性查找或 依賴注入來獲得。 依賴查找是一種模式,其中調用者 向容器對象請求具有特定名稱或特定類型的對象。 依賴注入是容器 通過構造函數,屬性或工廠方法將名稱傳遞給其他對象的模式。
那麼你對它有部分理解。您必須根據您的需要定製豆類,並通過使用稱爲IoC(Inversion of Control)Martin Fowler,也稱爲Dependency Injection(DI)的方法(通常稱爲IoC)通知Spring容器在需要時進行管理。
以某種方式連接bean,以便您不必關心實例化或評估對bean的任何依賴關係。這通常被稱爲Hollywood Principle。
谷歌是探索更多的最佳工具,除了在這個問題上你會被淹沒的鏈接之外。 :)
在Spring中,構成應用程序主幹和由Spring IoC 容器管理的那些對象稱爲bean。一個bean只是一個被實例化,組裝或以其他方式由Spring IoC容器管理的對象;
Spring有IoC容器,它帶有Bean的Bag;創建維護和刪除是Spring Container的職責。 我們可以通過佈線和自動佈線將豆放入彈簧。 接線意味着我們手動將其配置到XML文件中,並且「自動佈線」意味着我們將註釋放入Java文件中,然後Spring會自動掃描其中的java配置文件的根上下文,並將其放入Spring的包中。
Here is the detail URI where you got more information about Beans
豆類是在春天的核心。它們是Spring實例化和管理的標準Java對象。
豆類大多用於:
- 配置Spring以某種方式(數據庫連接參數,安全性等)使用
- 避免硬編碼的依賴性依賴注入,使我們的類仍然在自我-contained和單元測試
Spring bean的只是對象由管理實例Spring IOC容器。
彈簧IOC容器攜帶豆袋。Bean的創建,維護和刪除是Spring Container的職責。
我們可以通過接線和自動佈線把豆到春天。
接線意味着我們手動將其配置到XML文件中。
自動佈線意味着我們把註釋放在Java文件中,然後Spring會自動掃描java配置文件的根上下文,並將其放入Spring的包中。
Spring bean是類。相反(使用new
)實例化一個類的,你會得到一個實例鑄態,從應用程序上下文,其中bean是在應用程序上下文配置配置你的類的類型bean
。這樣,整個應用程序就可以維護整個應用程序中的單例範圍實例。在應用程序上下文被實例化後,所有的bean都按照它們的配置順序進行初始化。如果您的應用程序中沒有獲取任何bean,則會發生事件,所有bean實例在您創建應用程序上下文之後已經創建。
的Java Bean
一個Java Bean是,應遵循以下約定的Java類:
- 它應該有一個無參數的構造函數。
- 它應該是可串行化的。
- 它應該提供方法來設置和獲取 特性,被稱爲getter和setter方法的值。
讓理解的Spring bean
的Spring bean
的Spring bean是沒有什麼特別的,在Spring框架的任何對象,我們通過Spring容器初始化被稱爲春豆。任何普通的Java POJO類都可以是Spring Bean,如果它被配置爲通過提供配置元數據信息通過容器進行初始化。
簡單的bean
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容器通過元數據管理bean的生命週期(spring.xml)文件
我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框架 的基本步驟是
定義對象作爲豆。豆只是對象實例 這將是
春天框架通過查看他們的類定義創建。 這些定義
基本上形成配置元數據。該框架然後創建 一個計劃,該計劃
對象需要被實例化,這依賴需要設置和 注入時,新創建的實例的
範圍等,在此基礎上配置 元數據。
元數據可以在一個簡單的XML文件中提供,就像在
第一章。另外,可以提供元數據爲
註釋或Java配置。
書:只是春天
- 1. 春天 - 什麼是豆,什麼不是?
- 2. 春季豆 - 爲什麼我的私人領域是靜態的?
- 3. 什麼春季豆類和春天的情況下使用?
- 4. 什麼是「豆腐秤」?
- 5. 什麼是Apache駱駝豆?
- 6. 春豆容器
- 7. 春豆範圍
- 8. 嘲笑春豆
- 9. 春:豆混淆
- 10. 春豆創作
- 11. 春豆檢測
- 12. 春豆裁判
- 13. 豆不盡,春
- 14. 春豆和類
- 15. 春掃描儀豆
- 16. 春錯誤時,豆
- 17. 匿名春豆bean
- 18. 春豆和線程
- 19. 春季複合豆?
- 20. 春天不注射豆,我做錯了什麼?
- 21. 爲什麼範圍原型不爲春豆,它實現的BeanPostProcessor
- 22. 爲什麼我需要前綴「批:」在我的春天豆
- 23. 春天爲什麼找不到我的豆子?
- 24. 什麼是Spring beans什麼是豆的用法
- 25. 春豆ID值是否可以有$?
- 26. 什麼是春季安全
- 27. 什麼是春季批次?
- 28. 什麼是春天的Hystrix?
- 29. 豆的狀態是什麼意思?
- 30. 春豆地圖重複鍵
Grails構建在春季。如果您不熟悉Spring,我建議您至少閱讀一些材料,以便了解您使用的技術。 –
我認爲這裏的評論受到OP在Grails文檔和書籍參考文獻中看到的同樣的問題的影響:對於已經知道他們的意思的人來說,它們很容易。我發現維基百科的文章對初學者來說更好。 – elias
@MarcoForberg Spring的古老版本是谷歌最受歡迎的原因之一,是因爲人們不斷地從像SO這樣的地方鏈接到它... http://static.springsource.org/spring/docs/3.2.x/ spring-framework-reference/html/beans.html將是一個更好的開始這些日子的地方。 –