Spring中depends-on的作用是什麼?
http://yanln.iteye.com/blog/2210723
spring的IOC容器負責bean的管理,當例項化一個bean是,spring保證該Bean所依賴的其他bean已經初始化。一般情況下,用<ref>元素建立對其他bean的依賴關係。
比如:
Xml程式碼- <bean id="a" class="com.yanln.spring.bean.A"> </bean>
-
<bean id="b" class="com.yanln.spring.bean.B" p:a-ref="a"> </bean>
但在某些情況下,這種bean之間的依賴關係並不那麼明顯。
舉個例子:某個論壇系統擁有很多系統引數(如會話過期時間、快取更新時間等),這些系統引數用於控制系統的執行邏輯。比如:
Java程式碼- public class SystemSettings{
- //快取更新時間
- public static int REFRESH_CYCLE = 60;
- ......
- }
在SystemSettings中為每一個系統引數提供了預設值,但對於一個靈活的論壇是需要提供一個管理後臺的,在管理後臺中可以調整這些系統引數並儲存到後臺資料庫中,而在系統啟動時,初始化程式從資料庫後臺載入這些系統引數的值來覆蓋系統預設值。比如:
- public class SystemInit{
- public SystemInit(){
- //模擬從資料庫中載入的系統引數配置值
- SystemSettings.REFRESH_CYCLE=100;
- ......
- }
- }
假設論壇系統有一個快取重新整理管理器,它需要根據系統引數SystemSettings.REFRESH_CYCLE建立快取重新整理定時任務:
Java程式碼- public class CacheManager{
- public CacheManager(){
- Timer t = new Timer();
- TimerTask cacheTask = new CacheTask();
- //快取重新整理定時處理
- t.schedule(cacheTask,0,SystemSettings.REFRESH_CYCLE);
- }
- ......
- }
在以上的例項中,CacheManager類需要用到SystemSetting類的值,而SystemSettings的值有SystemInit負責初始化,雖然CacheManager不直接依賴SystemInit,但從邏輯上看,CacheManager希望在SystemInit載入並完成系統引數設定後再啟動,以獲得最新的系統引數值。如果這三個bean都在spring配置檔案中定義,我們如何保證SystemInit在CacheManager之前進行初始化呢?
spring允許使用者通過depends-on屬性指定bean前置依賴的bean,前置依賴的bean會在本bean例項化之前建立好:
Xml程式碼- <bean id="sysinit" class="SystemInit">
- <bean id="manager" class="CacheManager" depends-on="sysinit"/>
相關推薦
Spring中depends-on的作用是什麼?
http://yanln.iteye.com/blog/2210723 spring的IOC容器負責bean的管理,當例項化一個bean是,spring保證該Bean所依賴的其他bean已經初始化。一般情況下,用<ref>元素建立對其他bean的依賴關係。
spring中depends-on與look-up的作用
depends-on的作用depends-on的作用一般是一個bean依賴於另外一個bean,被依賴的bean一般用於一些初始化和收尾的工作 如在這個例子中,DependentBean依賴於ResourceBean, ResourceBean主要用於指定檔案路徑、開啟檔案
Spring中bean的作用範圍
pre 方法 context () 釋放資源 應用 生命 產生 ron singleton作用域: Spring的scope的默認值是singleton Spring 只會為每一個bean創建一個實例,並保持bean的引用. <bean id="bean的i
Spring中ApplicationContextAware 的作用
ApplicationContextAware 通過它Spring容器會自動把上下文環境物件呼叫ApplicationContextAware介面中的setApplicationContext方法。 我們在ApplicationContextAware的實現類中,就可以通過這個上下文環
在Spring 中元素的作用
一、介紹 spring的配置檔案中常包含如下元素:<context:annotation-config/>此元素的作用是向spring容器中註冊: 註冊這四個BeanPostProcessor的作用是使相應的註解起作用 1.AutowiredAnnotatio
Spring中Bean的作用域有哪些
在Spring的早期版本中,僅有兩個作用域:singleton和prototype,前者表示Bean以單例的方式存在;後者表示每次從容器中呼叫Bean時,都會返回一個新的例項,prototype通常翻譯為原型。 補充:設計模式中的建立型模式中也有一個原型模式,原型模式也是一個常用的模式,例如做一個
Spring中@Component的作用
今天在寫程式的時候看見一個以前沒有見過的註解(@Component),在網上查詢過後,經過實踐,決定把它記錄下來。 1、@controller 控制器(注入服務) 用於標註控制層,相當於struts中的action層 2、@service 服務(注入d
跨域問題:CrossOrigin Spring中@CrossOrigin的作用
在Controller中看到@CrossOrigin ,這是什麼?有什麼用?為什麼要用? what? @CrossOrigin是用來處理跨域請求的註解 先來說一下什麼是跨域: 當域名www.abc.com下的js程式碼去訪問www.def.com域名下的資源,就
Spring的depends-on屬性Bean依賴
Spring核心研究-管理bean之間的關係一(depends-on) depend-on用來表示一個Bean的例項化依靠另一個Bean先例項化。如果在一個bean A上定義了depend-on B那麼就表示:A 例項化前先例項化 B。這種情況下,A可能根本不需要持有一個
spring中ContextLoaderListener的作用
ContextLoaderListener的作用是啟動Web容器時,自動裝配ApplicationContext的配置資訊。因為它實現了ServletContextListener這個介面,在web.xml配置這個監聽器,啟動容器時,就會預設執行它實現的方
spring中bean的作用域屬性single與prototype的區別
1。 當一個bean的作用域設定為singleton, 那麼Spring IOC容器中只會存在一個共享的bean例項,並且所有對bean的請求,只要id與該bean定義相匹配,則只會返回bean的同一例項。換言之,當把一個bean定義設定為singleton作用域時,Sp
spring中的Log4jConfigListener作用和webapp.root的設定
轉:http://blog.sina.com.cn/s/blog_7bbf356c01016wld.html 使用spring中的Log4jConfigListener有如如下好處: 1. 動態的改變記錄級別和策略,不需要重啟Web應用,如《Effective Ente
Spring中@CrossOrigin的作用
在Controller中看到@CrossOrigin ,這是什麼?有什麼用?為什麼要用? what? @CrossOrigin是用來處理跨域請求的註解 先來說一下什麼是跨域: 當域名www.abc.com下的js程式碼去訪問www.def.co
spring 中bean的作用域和生命週期
spring中bean的作用域: 生命週期(官方圖): spring 中bean例項化過程(不好意思,我盜圖了): 1:instantiate bean物件例項化 2:populate properties 封裝屬性 3:如果Bean實現BeanNameAwar
Spring中Bean的作用域、生命周期
作用域 spring容器 分享 引用 多少 返回 portlet type 精確 Bean的作用域(scope) Spring 3定義了五種作用域,分別為singleton(單例)、prototype(原型)、request、session、global sessio
Spring中的ref和depends-on區別
參考:http://yanln.iteye.com/blog/2210723 這兩者都是表示對其他bean的依賴,但是ref常用的情況是這個bean作為當前bean的屬性,比如: <bean id="a" class="ClassA"/> &
Spring中Bean的五個作用域
就會 clas web應用 import 銷毀 cstring tor 默認 global 當通過spring容器創建一個Bean實例時,不僅可以完成Bean實例的實例化,還可以為Bean指定特定的作用域。Spring支持如下5種作用域: singleton:單例模式,
spring 之 lazy-init Autowired depends-on
bean 意思 ebe java 源碼分析 roo 啟動 register ont 1 lazy-init lazy-init是延遲初始化的意思。 spring中容器都是盡早的創建和配置所有的單例bean,因此當容器在啟動時,就會去配置和創建單例bean。 默認情況
Spring中Bean的理解以及@Bean的作用
是把 ring con 通過 自動配置 面向對象 ava 符號 反射 一、Bean是啥 1、Java面向對象,對象有方法和屬性,那麽就需要對象實例來調用方法和屬性(即實例化); 2、凡是有方法或屬性的類都需要實例化,這樣才能具象化去使用這些方法和屬性; 3、規律:凡是子類及
Spring-depends-on
trigger pre enc XML ger amp anon nat bean 如果沒有一個Bean依賴另一個Bean的static代碼塊進行初始化的話,我們可以使用depend-on實現,官方文檔如下: For most situations, the fact