Spring表達式語言(簡稱SpEL):是一個支持運行時查詢和操作圖的強大的表達式語言
語法類似EL:SpEL使用${...}作為界定符,所有在大括號中的字符都將被認為是SpEL
通過SpEL可以實現(xiàn):
通過bean的id對bean進行引用
調(diào)用方法以及引用方法中的屬性
計算表達式的值
正則表達式的匹配
SpringIOC容器對Bean的生命周期進行管理的過程:
通過構(gòu)造器或工廠方法創(chuàng)建Bean 實例
為Bean的屬性設(shè)置值和對其他Bean的引用
調(diào)用Bean的初始化方法
Bean可以使用了
當(dāng)容器關(guān)閉時,調(diào)用Bean的銷毀方法
在Bean的聲明里設(shè)置init-method和destroy-method屬性,為Bean指定初始化和銷毀方法
Bean后置處理器允許在調(diào)用初始化方法前后對Bean進行額外的處理
Bean后置處理器對IOC容器里所有的Bean實例逐一處理。而非單一實例。
實現(xiàn)方法:
創(chuàng)建一個實現(xiàn)某個java接口的類,實現(xiàn)其中的兩個方法
在Spring IOC中配置Bean
通過工廠方式配置bean
靜態(tài)工廠方法:直接調(diào)用某一個類的靜態(tài)方法就可以返回bean的實例
class屬性:指向靜態(tài)工廠方法的全類名
factory-method:指向靜態(tài)工廠方法的名字
?constructor-arg:如果工廠方法需要傳入?yún)?shù),則使用
實例工廠方法:實例工廠的方法,即先需要創(chuàng)建工廠本身,再調(diào)用工廠的實例方法
factory-bean屬性:指向?qū)嵗S方法的bean
factory-method:指向靜態(tài)工廠方法的名字
constructor-arg:如果工廠方法需要傳入?yún)?shù),則使用
通過FactoryBean配置Bean
自定義的FactoryBean需要實現(xiàn)FactoryBean接口
在配置文件中,通過FactoryBean來配置Bean的
class:指向FactoryBean的全類名
property:配置FactoryBean的屬性
但實際返回的卻是FactoryBean的getObject()方法返回的實例
通過注解配置bean
Spring能夠從classpath下自動掃描,偵測和實例化具有特定注解的組件
特定組件包括:
@Component:基本注解,標(biāo)識了一個受Spring管理的組件
@Responsitary:標(biāo)識持久層組件
@Service:標(biāo)識服務(wù)層(業(yè)務(wù)層)組件
@Controller:標(biāo)識表示層組件
Spring有默認的命名策略
也可以在注解中通過value屬性標(biāo)識組件的名稱
context:exclude-filter 子節(jié)點排除哪些指定表達式的組件
context:include-fiter? 子節(jié)點指定包含哪些表達式的組件,該子節(jié)點需要use-default-fiters配合使用
指定Spring容器掃描的包:
<context:component-scan base-package="包名">Spring會掃描這個基類包里及其子包里的所有類
<context:component-scan>元素還會自動注冊AutowiredAnnotationBeanPostProcessor實例,該實例可以自動裝配具有@Autowired和@Resourse、@Inject注解的屬性