Spring是一個(gè)開(kāi)源框架近零,最根本的使命就是:簡(jiǎn)化java開(kāi)發(fā)珠洗。 依賴(lài)注入和AOP是Spring框架最核心的部分溜歪。
Spring的四種關(guān)鍵性策略:
? ? 1.基于POJO的輕量級(jí)和最小侵入性編程;
? ? 2.通過(guò)依賴(lài)注入和面向接口實(shí)現(xiàn)松耦合险污;
? ? 3.通過(guò)切面和慣例進(jìn)行聲明式編程痹愚;
????4.通過(guò)切面和模版減少樣板式代碼;
Bean的生命周期:
1. Spring對(duì)bean進(jìn)行實(shí)例化蛔糯;
2. Spring將值和bean的引用注入到bean對(duì)應(yīng)的屬性中拯腮;
3.如果bean實(shí)現(xiàn)了Beannameaware接口, Spring將bean的ID傳遞給setbean-Name()方法蚁飒;
4.如果bean實(shí)現(xiàn)了Beanfactoryaware接口动壤, Spring將調(diào)用setbeangactory()方法,將Beanfactory容器實(shí)例傳入淮逻;
5.如果bean實(shí)現(xiàn)了Applicationcontextaware接口琼懊,Spring將調(diào)用setapplicationcontext()方法,將bean所在的應(yīng)用上下文的引用傳入進(jìn)來(lái)爬早;6.如果bean實(shí)現(xiàn)了Beanpostprocessor接口哼丈, Spring將調(diào)用它們的post- Processbeforeinitialization()方法;
7.如果bean實(shí)現(xiàn)了Initializingbean接口筛严, Spring將調(diào)用它們的after- Propertlesset()方法醉旦。類(lèi)似地,如果bean使用init- method聲明了初始化方法,該方法也會(huì)被調(diào)用车胡;
8.如果bean實(shí)現(xiàn)了Beanpostprocessor接口檬输, Spring將調(diào)用它們的post Processafterinitialization()方法;
9.此時(shí)匈棘,bean已經(jīng)準(zhǔn)備就緒丧慈,可以被應(yīng)用程序使用了,它們將一直駐留在應(yīng)用上下文中主卫,直到該應(yīng)用上下文被銷(xiāo)毀逃默;
10.如果bean實(shí)現(xiàn)了Disposablebean接口, Spring將調(diào)用它的destroy()接口方法簇搅。同樣笑旺,如果bean使用destroy- method聲明了銷(xiāo)毀方法,該方法也會(huì)被調(diào)用馍资。