javascript
Spring_day01
框架的概念:
框架就是把一些通用的類,和方法集中起來。避免不必要的重復開發,解放了程序員,提高了開發效率
Spring??SpringMVC ??Mybatis
:Spring
是一個開源框架。并且是一個輕量級的框架,能夠一站式的分層部署項目。能夠整合現在主流框架起到一個粘合劑的作用
:輕量級
1.空間占用角度:
spring的核心包不到1MB,占用計算機的資源特別小
2.對容器的依賴角度:
對容器依賴性越低?越輕量
:Spring的IOC
IOC就是控制反轉
將對象創建的權利交給Spring容器來管理。由容器來管理對象的生命周期。
Person?p = new Person(); ???//手動的創建過程
Person p1 = Spring容器.getXXX();
SpringIOC的實現步驟:
1.導入相關的JAR包
2.編寫實體類
3.編寫配置文件(1.編寫配置文件的頭????2.編寫對象的具體映射關系)
4.啟動spring容器
5.通過容器獲取對象
6.調用對象的方法完成相應的功能
Spring具體實現過程:
2.編寫實體類
3.編寫配置文件
1.spring默認的文件的名稱是applicationContext.xml
2.spring的配置文件的名稱可以是任意的
3.beans 只要是spring管理的類就是一個bean
4.bean的編寫?
id是唯一的標識?不能夠重復
class寫的就是類的全名(包名+類名)
id的編寫原則?見名知意?首字母小寫。其他駝峰規則
class屬性最好使用自動提示保證不出錯(如果沒有就關閉再打開)
5.創建Spring容器
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
6.獲取對象
Context.getBean("ID");
7.對象調用方法
:@Test補充
叫做單元測試
要求:
1.返回值必須是public void?XXX(){ ????}
2.@Test標簽必須加載方法上
:SpringIOC的原理
控制反轉的過程:
Spring容器在啟動的時候。先去讀取applicationContext.xml配置文件。讀取順序是按行讀取。每當讀取到一個bean的時候就會按照bean中的class屬性依據反射的方法創建出來對象,把創建出來的對象當做value值存儲到MAP中,bean的ID當做Map中的key形成鍵值對的形式,保存到Spring容器中,方便以后調用
:對象獲取的方法
1.通過bean中的id能夠獲取對象
context.getBean("hello");?
2.通過class屬性來獲取
Hello hello = context.getBean(Hello.class);
注意:
1.對象獲取的時候盡量使用ID,不要用class,可能會由于類型不唯一報錯。
2.如果bean中的ID重復,那么Spring在創建對象時保存到map中的時候就會報錯。會報ID已經存在的錯誤。
原因:已經存在的bean不能被修改
:對象創建的方式
1.通過默認的構造方法創建對象
注意的前提:
通過bean中的class利用反射生成對象的時候必須要有無參構造。所以以后再寫構造方法的時候切記一定要加無參構造,否則生成對象時會出錯。
2.靜態工廠創建對象
class 靜態工廠類
factory-method 生產對象的方法
<bean id="calendar1" class="factory.StaticFactory" factory-method="getDate"></bean>
Spring的執行過程:
首先會根據class找到靜態工廠類,然后通過factory-method
找到類中的靜態方法,執行相關的操作,如果該方法不是靜態方法則會報錯。所以使用靜態工廠 必須要調用靜態方法
3.實例工廠創建對象
<bean id="newFactory" class="factory.NewFactory"></bean>
<bean id="calendar2" factory-bean="newFactory" factory-method="getDate"></bean>
實例工廠創建對象時,首先根據factory-bean找到相應的工廠bean,然后根據工廠的class創建工廠對象。根據factory-method
調用工廠對象的方法創建需要的對象。
4.Spring工廠創建對象
<bean id="calendar3" class="factory.SpringFactory"></bean>
class屬性寫的是Spring工廠的類型。當Spring容器在創建對象的時候會自動的調用實現方法中的getObject方法,幫助創建對象。
SpringFactory需要實現一個接口
SpringFactory implements FactoryBean<Calendar>
其他的都交給Spring來處理
:Spring bean中的屬性
1.別名標簽
<alias name="TareneHello" alias="你好1607"/>
2.對象的單例和多例
單例對象:spring容器內部只有一份
1.Spring容器內部默認維護了一個單例對象。
2.scope="prototype"
當scope屬性為prototype時根據bean生成的對象就是多例對象。
3.scope="singleton"?
當scope屬性為singleton和默認不寫的時候對象創建都是單例的。
使用場景:
購物車需要是多例的,否則會造成混論。
3.懶加載問題
說明:理想狀態下,我們需要什么對象容器幫我們生產什么對象,這是最合理的,這樣做既能滿足需求又能減少計算機壓力
1.什么是懶加載:
懶加載就是在容器啟動的時候不會創建對象,當通過容器getBean()的時候才會創建對象。這樣做能實現最理想的狀態。
2.lazy-init="true" 實現懶加載
???lazy-init="false" 立即加載
???如果默認不寫?也是立即加載
3.全局的懶加載配置
default-lazy-init="true" 就能實現懶加載
default-lazy-init="false/default" 立即加載
當bean中的懶加載為default 應該與全局的懶加載配置保持一致。
4.自定義的初始化和銷毀方法
init-method="init" destroy-method="destroy"
自定義的初始化和銷毀可以手動配置。并且執行。
5.DI(依賴注入)
可以通過Spring容器可以動態的注入屬性
1.依賴注入可以為簡單類型賦值,也可以為引用類型賦值。
但是前提條件是屬性必須添加setXXX方法。如果沒有set方法則不能實現注入。
2.Spring可以為簡單類型和復雜類型進行賦值。包括
List?Set Map(內部維護的是一個LinkedHashMap)
轉載于:https://www.cnblogs.com/buyucgb/p/6021541.html
總結
以上是生活随笔為你收集整理的Spring_day01的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: node.js搭建简单服务器,用于前端测
- 下一篇: POJ 3348 Cows 凸包面积