-
Spring注入概念:指在啟動(dòng)Spring容器加載bean配置的時(shí)候,完成對(duì)變量的復(fù)制行為。(掃描xml文件中的bean標(biāo)簽時(shí),實(shí)例化對(duì)象的同時(shí),完成成員變量的賦值)
Spring常用的注入方式:
設(shè)值注入:通過(guò)一個(gè)屬性或者成員變量的Set方法進(jìn)行注入
<bean id="injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl">
<property name="injectionDAO" ref="injectionDAO"/>
</bean>
<bean id="injectionDAO" class="com.imooc.ioc.injection.dao.InjectionDAOImpl">
</bean>
構(gòu)造注入
<bean id="injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl">
<constructor-arg name="injectionDAO" ref="injectionDAO"/>
</bean>
<bean id="injectionDAO" class="com.imooc.ioc.injection.dao.InjectionDAOImpl">
</bean>
查看全部 -
Spring Bean作用域,常用:singleton(默認(rèn))、prototype
Spring Bean常用配置項(xiàng)
????Id:在整個(gè)IOC容器中Bean的唯一標(biāo)識(shí)
????Class:具體實(shí)例化的哪一個(gè)類
????Scope:作用域
????Constructor arguments:構(gòu)造器的參數(shù)
????Properties:Bean的屬性
????Autowiring mode:自動(dòng)裝配模式
????Lazy-initialization mode:懶加載模式
????Initialization/destruction method:初始化/銷毀 方法查看全部 -
Bean的生命周期
定義、初始化、使用、銷毀
初始化和銷毀都有兩種方法:
直接實(shí)現(xiàn)spring中某個(gè)接口如 DisableBean,覆蓋destroy方法
配置init-method 或destroy-method,指向某個(gè)方法
或 配置全局的default intitle-method(優(yōu)先級(jí)最低,其他兩種方法配置了的時(shí)候,默認(rèn)方法無(wú)效)
查看全部 -
default-init-method="defaultStart" default-destroy-method="defaultStop"><!--定義所有bean的全局初始化和摧毀方法,bean可以沒(méi)有全局初始化和摧毀方法 -->
<bean id="beanLifeCycle" class="xjh.bean.BeanLifeCycle" init-method="start" destroy-method="stop"></bean><!-- 1.全局的初始化和摧毀方法不生效 2.不可以沒(méi)有初始化和摧毀方法-->
public void afterPropertiesSet() throws Exception {//方法將在所有的屬性被初始化后調(diào)用,但是會(huì)在init前調(diào)用,但是主要的是如果是延遲加載的話,則馬上執(zhí)行
public void afterPropertiesSet() throws Exception {//方法將在所有的屬性被初始化后調(diào)用,但是會(huì)在destroy前調(diào)用,但是主要的是如果是延遲加載的話,則馬上執(zhí)行
查看全部 -
xml方式的Bean自動(dòng)注入(<beans>標(biāo)簽的屬性default-autowire=byName)
No:不做任何操作,默認(rèn)選項(xiàng)。
byname:根據(jù)setXXX()方法的set后的名稱進(jìn)行自動(dòng)注入(首字母不區(qū)分大小寫)。查找xml中有沒(méi)有<bean>標(biāo)簽id的名稱與屬性完全一致的,如果有則自動(dòng)注入,并且執(zhí)行set方法,基于set方法,如果沒(méi)有不報(bào)錯(cuò),該屬性置為NULL,并且不執(zhí)行set()。
byType:根據(jù)類型自動(dòng)注入,如果容器中存在一個(gè)與指定屬性類型相同的bean,那么該屬性自動(dòng)注入;如果存在多個(gè)該類型bean,那么拋出異常,并指出不能使用byType方式進(jìn)行自動(dòng)裝配,如果沒(méi)有找到相匹配的bean,則什么事都不發(fā)生,該屬性置為null基于set方法。
Constructor:與byType方式類似,不同之處在于它應(yīng)用于構(gòu)造器參數(shù)。如果容器中沒(méi)有找到與構(gòu)造器參數(shù)類型一個(gè)bean,那么拋出異常。
查看全部 -
Bean的作用域
singleton:單例,指一個(gè)Bean 容器中只存在一份。
prototype:每次請(qǐng)求創(chuàng)建新的實(shí)例,destroy方式不生效
request:每次http請(qǐng)求創(chuàng)建一個(gè)實(shí)例且僅在當(dāng)前request內(nèi)有效
session:同上,每次http請(qǐng)求創(chuàng)建一個(gè)實(shí)例且僅在當(dāng)前session內(nèi)有效
global session:基于portlet的web中有效
查看全部 -
配置destroy-method
實(shí)現(xiàn)org.springframework.beans.factory.DisposableBean接口,覆蓋afterPropertiesSet方法
查看全部 -
Bean的作用域
singleton:單例,指一個(gè)Bean 容器中只存在一份。
prototype:每次請(qǐng)求創(chuàng)建新的實(shí)例,destroy方式不生效
request:每次http請(qǐng)求創(chuàng)建一個(gè)實(shí)例且僅在當(dāng)前request內(nèi)有效
session:同上,每次http請(qǐng)求創(chuàng)建一個(gè)實(shí)例且僅在當(dāng)前session內(nèi)有效
global session:基于portlet的web中有效
查看全部 -
Spring注入
Spring注入是指在啟動(dòng)Spring容器加載bean 配置的時(shí)候,完成對(duì)變量的賦值行為。
常用的注入方式
設(shè)值注入
構(gòu)造注入
查看全部 -
Bean的生命周期
查看全部 -
@Scope("prototype") @Repository public?vlass?MovieFinderImple?implements?MovieFinder?{ ????//?... }
通過(guò)@Scope的方式來(lái)標(biāo)識(shí)Bean的作用域
<bean>???? ????<context:component-scan?base-package="org.example"? ?????????????scope-resolver="org.example.MyScopeResolver"?/> </beans>
實(shí)現(xiàn)ScopeMetadataResolver接口并提供一個(gè)無(wú)參構(gòu)造器
查看全部 -
IOC:控制反轉(zhuǎn)。
查看全部 -
default-init-method="defaultStart" default-destroy-method="defaultStop"><!--定義所有bean的全局初始化和摧毀方法,bean可以沒(méi)有全局初始化和摧毀方法 -->
<bean id="beanLifeCycle" class="xjh.bean.BeanLifeCycle" init-method="start" destroy-method="stop"></bean><!-- 1.全局的初始化和摧毀方法不生效 2.不可以沒(méi)有初始化和摧毀方法-->
public void afterPropertiesSet() throws Exception {//方法將在所有的屬性被初始化后調(diào)用,但是會(huì)在init前調(diào)用,但是主要的是如果是延遲加載的話,則馬上執(zhí)行
查看全部 -
面向接口編程查看全部
-
什么是接口
查看全部
舉報(bào)