Spring中Bean的定義和作用域介紹

這篇文章主要介紹“Spring中Bean的定義和作用域介紹”,在日常操作中,相信很多人在Spring中Bean的定義和作用域介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Spring中Bean的定義和作用域介紹”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

創新互聯建站擁有10余年成都網站建設工作經驗,為各大企業提供成都做網站、成都網站設計服務,對于網頁設計、PC網站建設(電腦版網站建設)、成都app開發、wap網站建設(手機版網站建設)、程序開發、網站優化(SEO優化)、微網站、主機域名等,憑借多年來在互聯網的打拼,我們在互聯網網站建設行業積累了很多網站制作、網站設計、網絡營銷經驗,集策劃、開發、設計、營銷、管理等網站化運作于一體,具備承接各種規模類型的網站建設項目的能力。

一、什么是Bean

1、Java面向對象,對象有方法和屬性,那么就需要對象實例來調用方法和屬性(即實例化);
2、凡是有方法或屬性的類都需要實例化,這樣才能具象化去使用這些方法和屬性;
3、規律:凡是子類及帶有方法或屬性的類都要加上注冊Bean到Spring IoC的注解
4、把Bean理解為類的代理或代言人(實際上確實是通過反射、代理來實現的),這樣它就能代表類擁有該擁有的東西了。
5、我們都在微博上@過某某,對方會優先看到這條信息,并給你反饋,那么在Spring中,你標識一個@符號,那么Spring就會來看看,并且從這里拿到一個Bean或者給出一個Bean

二、注解分為兩類:

1、一類是使用Bean,即是把已經在xml文件中配置好的Bean拿來用,完成屬性、方法的組裝;比如@Autowired , @Resource,可以通過byTYPE(@Autowired)、byNAME(@Resource)的方式獲取Bean;
2、一類是注冊Bean,@Component , @Repository , @ Controller , @Service , @Configration這些注解都是把你要實例化的對象轉化成一個Bean,放在IoC容器中,等你要用的時候,它會和上面的@Autowired , @Resource配合到一起,把對象、屬性、方法完美組裝。

三、Bean的定義

元素是Spring配置文件的根元素,元素是元素的子元素,元素可以包含多個子元素,每個元素可以定義一個Bean實例,每一個Bean對應Spring容器里的一個Java實例定義Bean時通常需要指定兩個屬性。

Spring容器集中管理Bean的實例化,Bean實例可以通過BeanFactory的getBean(Stringbeanid)方法得到。BeanFactory是一個工廠,程序只需要獲取BeanFactory引用,即可獲得Spring容器管理全部實例的引用。程序不需要與具體實例的實現過程耦合。大部分Java EE應用里,應用在啟動時,會自動創建Spring容器,組件之間直接以依賴注入的方式耦合,甚至無須主動訪問Spring容器本身。

當我們在配置文件中通過方法配置一個Bean時,這樣就需要該Bean實現類中必須有一個無參構造器。故Spring底層相當于調用了如下代碼:

Xxx = new xx.XxClass()如果在配置文件中通過構造注入來創建Bean:
<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
   xmlns="http://www.springframework.org/schema/beans"  
   xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
   <bean id="bean1" class="com.Bean1">  
       <constructor-arg value="chenssy"/>  
       <constructor-arg value="35-354"/>  
   </bean>  


</beans>

則Spring相當于調用如下代碼:

Bean bean = new com.Test("chenssy","35-354");

四、容器中Bean的作用域

當通過Spring容器創建一個Bean實例時,不僅可以完成Bean實例的實例化,還可以為Bean指定特定的作用域。
Spring支持5種作用域:
1.Singleton:單例模式。在整個SpringIoC容器中,使用singleton定義的Bean將只有一個實例。
2.Prototype:原型模式。每次通過容器的getBean方法獲取prototype定義的Bean時,都將產生一個新的Bean實例。
3.request:對于每次HTTP請求,使用request定義的Bean都將產生一個新的實例,即每次HTTP請求都會產生不同的Bean實例。當然只有在WEB應用中使用Spring時,該作用域才真正有效。
4.session:對于每次HTTPSession,使用session定義的Bean都將產生一個新的實例時,即每次HTTP Session都將產生不同的Bean實例。同HTTP一樣,只有在WEB應用才會有效。
5.global session:每個全局的HTTPSession對應一個Bean實例。僅在portlet Context的時候才有效。

比較常用的singleton和prototype。如果一個Bean實例被設置為singleton,那么每次請求該Bean時都會獲得相同的實例。容器負責跟蹤Bean實例的狀態,負責維護Bean實例的生命周期行為。如果一個Bean實例被設置為prototype,那么每次請求該di的Bean,Spring都會創建一個新的Bean實例返回給程序,在這種情況下,Spring容器僅僅使用new關鍵字創建Bean實例,一旦創建成功,容器將不會再跟蹤實例,也不會維護Bean實例的狀態。如果我們不指定Bean的作用域,則Spring會默認使用singleton作用域。Java在創建Java實例時,需要進行內存申請。銷毀實例時,需要完成垃圾回收。這些工作都會導致系統開銷的增加。因此,prototype作用域Bean的創建、銷毀代價會比較大。而singleton作用域的Bean實例一旦創建成功,可以重復使用。因此,除非必要,否則盡量避免將Bean的作用域設置為prototype。

到此,關于“Spring中Bean的定義和作用域介紹”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注創新互聯網站,小編會繼續努力為大家帶來更多實用的文章!

當前題目:Spring中Bean的定義和作用域介紹
鏈接URL:http://m.kartarina.com/article34/jeohse.html

成都網站建設公司_創新互聯,為您提供虛擬主機軟件開發網站導航面包屑導航企業網站制作建站公司

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設
主站蜘蛛池模板: 亚洲AV无码专区在线亚| 久久久无码人妻精品无码| 极品无码国模国产在线观看| 特级无码毛片免费视频尤物| 亚洲欧洲日产国码无码网站 | 国产免费AV片无码永久免费| 粉嫩大学生无套内射无码卡视频| 无码AV中文一区二区三区| 久久久久久亚洲精品无码| 国产综合无码一区二区三区| 无码H黄肉动漫在线观看网站| 中文无码喷潮在线播放| 亚洲日韩乱码中文无码蜜桃| 国产成人无码一区二区在线观看| 无码中文字幕乱码一区| 亚洲精品无码不卡在线播放HE| 国产做无码视频在线观看| 亚洲AV无码久久精品狠狠爱浪潮| 伊人久久大香线蕉无码麻豆| 人妻少妇看A偷人无码精品视频| 国产精品无码一区二区三级 | 特级毛片内射www无码| 国产激情无码视频在线播放性色| 无码激情做a爰片毛片AV片| 亚洲人成无码网站在线观看 | 亚洲一区二区三区国产精品无码 | 亚洲AV无码AV吞精久久| 久久亚洲精品无码aⅴ大香| 亚洲AV无码专区国产乱码电影| 无码av不卡一区二区三区| 无码av天天av天天爽| 老司机无码精品A| 好了av第四综合无码久久| 亚洲综合一区无码精品| 无码人妻精品一区二区蜜桃网站| 少妇人妻偷人精品无码视频新浪| 亚洲av无码一区二区三区网站 | 少妇无码一区二区三区免费| 亚洲AV无码乱码在线观看富二代| 亚洲人成人无码网www电影首页 | 精品无码一级毛片免费视频观看|