2018.12.22 Spring學習02
Spring學習02
1.使用註解配置Spring
1.1 為主配置檔案引入新的名稱空間(約束)
新增約束檔案xxx-xxx-context.xml
新增到主配置檔案中
選擇剛才的context.xml文件
記住:一個xml文件只能有一個名稱空間(昨天的名稱空間是空的) 只需要寫最後一個單詞作為名稱空間就可以了
1.2 開啟使用註解代理配置檔案
1.3 在類中使用註解完成配置
1.4 編寫測試類進行Junit測試
解決辦法
重新執行
1.5 將物件註冊到容器中
1.6 如何指定物件的作用範圍 (scope註解)
預設值屬性singleton
1.7 給物件賦值 (Value註解注入)
1.7.1 值型別注入
1.在成員變數上面新增Value
2.在set方法上面新增Value(推薦使用)
以上是值型別注入的兩種方式。第一種是通過反射的Field賦值,第二種是set方法賦值。技術上來說第一種破壞了物件的封裝性,但是大家都習慣加在成員變數上面
1.7.2 引用物件型別注入
在Car物件上注入註解 Component,並且新增Value賦值
第一種注入方式。@Autowired
在配置檔案中新增第二輛車
測試第一種方式發現無法輸出第二輛車的資訊輸出
第二種注入方式。@Autowired @Qualifier("car2") 需要兩個一起結合使用
第三種注入方式。@Resource(name="car2")
1.7.3 指定注入初始化/銷燬方法
@PostConstruct //在物件建立後呼叫 init-method
@PreDestroy //在物件銷燬之前呼叫 destroy-method
測試
修改後二次測試
2.STS外掛安裝
檢視詳細的教程
https://www.cnblogs.com/qichunlin/p/10159524.html
3. spring與junit整合測試
3.1 導包 4+2+aop+test
在測試類中添加註釋 @RunWith(SpringJUnit4ClassRunner.class)
在新增一個註釋 @ContextConfiguration("classpath:applicationContext.xml")
測試
3.spring中的AOP
3.1思想 介紹
第一次---攔截器(亂碼處理)
第二次---事務管理(通過動態代理方式解決)
第三次---Action中引數賦值校驗是否登陸
3.2 spring中的aop概念
Spring能夠為容器中管理的物件生成動態代理物件
以前我們要使用動態代理物件,我們需要自己呼叫下面的這個方法,Proxy.newProxyInstance(xx,xx,xx)
spring能夠幫我們生成代理物件 (重點)
3.3 spring實現aop的原理
3.3.1 動態代理(有介面,優先使用)
被代理物件必須要實現介面,才能產生代理物件。如果沒有介面將不能使用動態代理
測試
3.3.2 cglib代理(沒有介面)
第三方代理技術,cglib代理可以對任何類生成代理,代理的原理是對目標物件進行繼承代理。如果目標物件唄final修飾,那麼該類無法被cglib代理
測試