java JSP開發(fā)之Spring中Bean的使用
java JSP開發(fā)之Spring中Bean的使用
在傳統(tǒng)的Java應(yīng)用中,bean的生命周期很簡單。使用Java關(guān)鍵字new進(jìn)行bean實(shí)例化,然后bean就可以被使用了,一旦該bean不再使用,Java就自動進(jìn)行垃圾回收。然而,在Spring中,bean的生命周期就比較復(fù)雜了。下面是一個bean裝載到Spring應(yīng)用上下文的過程:
如圖所示:在你準(zhǔn)備調(diào)用bean之前,bean工廠執(zhí)行了若干啟動步驟:
1.Spring對bean進(jìn)行實(shí)例化;
2.Spring將值和bean的引用注入到bean對應(yīng)的屬性中;
3.如果bean實(shí)現(xiàn)了BeanNameAware接口,Spring將bean的ID傳遞給setBean-Name()方法;
4.如果bean實(shí)現(xiàn)了BeanFactoryAware接口,Spring將調(diào)用setBeanFactory()方法,將BeanFactory容器實(shí)例傳入;
5.如果bean實(shí)現(xiàn)了ApplicationContextAware接口,Spring將調(diào)用setApplicationContext()方法,將bean所在的應(yīng)用上下文的引用傳入進(jìn)來;
6.如果bean實(shí)現(xiàn)了BeanPostProcessor接口,Spring將調(diào)用它們的post-ProcessBeforeInitialization()方法;
7.如果bean實(shí)現(xiàn)了InitializingBean接口,Spring將調(diào)用它們的after-PropertiesSet()方法。類似地,如果bean使用initmethod聲明了初始化方法,該方法也會被調(diào)用;
8.如果bean實(shí)現(xiàn)了BeanPostProcessor接口,Spring將調(diào)用它們的post-ProcessAfterInitialization()方法;
9.此時,bean已經(jīng)準(zhǔn)備就緒,可以被應(yīng)用程序使用了,它們將一直駐留在應(yīng)用上下文中,直到該應(yīng)用上下文被銷毀;
10.如果bean實(shí)現(xiàn)了DisposableBean接口,Spring將調(diào)用它的destroy()接口方法。同樣,如果bean使用destroy-method聲明了銷毀方法,該方法也會被調(diào)用。
一,創(chuàng)建可以被發(fā)現(xiàn)的Bean
在廚師的眼中,一套好的刀是必不可少的,它能夠?qū)⑵降氖澄锼夭募庸こ删碌乃囆g(shù)品。
package cooking; public interface knife{ void cut(); }
現(xiàn)在,我們創(chuàng)建一個名為knife(刀)的接口,它擁有cut(切)的功能。接下來我們實(shí)現(xiàn)這個接口
package cooking @Component public class beef implements knife{ private int weight = 2; private double price = 32.1; public void cut(){ System.out.println(“This is perfect beef”,+“weight:”+weight +“kg”+“,”+“It's price is”+price+"$"); } }
請注意,我們在beef類上使用了@Component注解。這個簡單的注解表明 該類是一個組件類,并告訴Spring要為這個類創(chuàng)建bean。
在默認(rèn)情況下,組件掃描是不啟用的,我們需要顯示配置一下Spring,命令Spring去尋找?guī)в蠤Component注解的類,并為其創(chuàng)建bean
package cooking @Configuration @ComponentScan public class knifeConfig{ }
注意到,在knifeConfig類上加上了@ComponentScan注解,該注解能夠在Spring中開啟組件掃描,如果沒有其他配置的話,@ComponentScan默認(rèn)會掃描與配置類相同的包,去查找?guī)в蠤Component的注解類,并在Spring中自動為其創(chuàng)建一個bean。如果你更傾向于使用XML來啟用組件掃描的話,那么可以使用Spring context命名空間的<context:component-scan>元素。
<context:component-scan base-package="cooking"/> 該標(biāo)簽會開啟組件掃描,去cooking包下尋找?guī)в蠤Component的注解類。
以上就是Spring中Bean的使用方法,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Java如何實(shí)現(xiàn)將類文件打包為jar包
這篇文章主要介紹了Java如何實(shí)現(xiàn)將類文件打包為jar包,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06使用@JsonFormat和@DateTimeFormat對Date格式化操作
這篇文章主要介紹了使用@JsonFormat和@DateTimeFormat對Date格式化操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08java ThreadPoolExecutor線程池拒絕策略避坑
這篇文章主要為大家介紹了java ThreadPoolExecutor拒絕策略避坑踩坑示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07解決java 查看JDK中底層源碼的實(shí)現(xiàn)方法
本篇文章是對在java中查看JDK中底層源碼的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05