Spring-05 使用注解開發
在spring4之後,想要使用注解形式,必須得要引入aop的包5
在配置檔案當中,還得要引入一個context限制
我們之前都是使用 bean 的标簽進行bean注入,但是實際開發中,我們一般都會使用注解!
1、配置掃描哪些包下的注解
2、在指定包下編寫類,增加注解
3.測試

可以不提供set方法,直接在屬性名上添加@value(“xxx”)
測試結果成功
如果提供了set方法,在set方法上添加@value(“xxx”)
我們這些注解,就是替代了在配置檔案當中配置步驟而已!更加的友善快捷!
@Component三個衍生注解
為了更好的進行分層,Spring可以使用其它三個注解,功能一樣,目前使用哪一個功能都一樣。
@Controller:web層
@Service:service層
@Repository:dao層
寫上這些注解,就相當于将這個類交給Spring管理裝配了!
作用域
@scope
singleton:預設的,Spring會采用單例模式建立這個對象。關閉工廠 ,所有的對象都會銷毀。
prototype:多例模式。關閉工廠 ,所有的對象不會銷毀。内部的垃圾回收機制會回收
總結
XML與注解比較
XML可以适用任何場景 ,結構清晰,維護友善
注解不是自己提供的類使用不了,開發簡單友善
xml與注解整合開發 :推薦最佳實踐
xml管理Bean
注解完成屬性注入
使用過程中, 可以不用掃描,掃描是為了類上的注解
作用:
進行注解驅動注冊,進而使注解生效
用于激活那些已經在spring容器裡注冊過的bean上面的注解,也就是顯示的向Spring注冊
如果不掃描包,就需要手動配置bean
如果不加注解驅動,則注入的值為null
我們現在要完全不使用spring的xml配置,全權交給java來做。
@Configuration:本質上也是一個Controller,也會被spring托管,注冊到容器中 @Configuration:表示這是一個配置類,和之前的beans.xml的功能一樣的 @ComponentScan:表示元件的掃描 @import:導入其他的配置類 @Bean:表示注冊一個bean
為什麼要學習代理模式,因為AOP的底層機制就是動态代理。
代理模式:
靜态代理
動态代理
角色分析
抽象角色 : 一般使用接口或者抽象類來實作
真實角色 : 被代理的角色
代理角色 : 代理真實角色 ; 代理真實角色後 , 一般會做一些附屬的操作
客戶 : 使用代理角色來進行一些操作
分析:在這個過程中,你直接接觸的就是代理類(Proxy),就如同現實生活中的樣子,你看不到房東,但是你依舊通過中介,租到了房東的房子,這就是所謂的代理模式。
靜态代理的好處:
可以使得我們的真實角色更加純粹 . 不再去關注一些公共的事情 .
公共的業務由代理來完成 . 實作了業務的分工 ,
公共業務發生擴充時變得更加集中和友善 .
缺點 :
類多了 , 多了代理類 , 工作量變大了 . 開發效率降低 .
我們在不改變原來的代碼的情況下,實作了對原有功能的增強,這是AOP中最核心的思想。
動态代理的角色和靜态代理的一樣 .
動态代理的代理類是動态生成的,靜态代理的代理類是我們提前寫好的
動态代理分為兩類 : 一類是基于接口動态代理 , 一類是基于類的動态代理
基于接口的動态代理----JDK動态代理
基于類的動态代理--cglib
現在用的比較多的是 javasist 來生成動态代理
我們這裡使用JDK的原生代碼來實作
核心 : InvocationHandler 和 Proxy
【InvocationHandler:調用處理程式】
【Proxy : 代理】
一個動态代理 , 一般代理某一類業務 , 一個動态代理可以代理多個類,代理的是接口
靜态代理有的它都有,靜态代理沒有的,它也有! 一個動态代理 , 一般代理某一類業務 一個動态代理可以代理多個類,代理的是接口!