Spring框架兩個(gè)核心部分:IOC和Aop
1.IOC:控制反轉(zhuǎn)玩郊,把創(chuàng)建對象過程交給Spring處理
2.Aop,面向切面枉阵,不修改源代碼進(jìn)行功能增強(qiáng)
IOC容器
一.IOC底層原理
(1)xml配置文件译红,配置創(chuàng)建的對象
<bean id="user" class="com.it.spring5.User"></bean>
(2)有service和dao類,創(chuàng)建工廠類
class UserFactory{
public static UserDao getDao(){
String classValue = class屬性值; //1.xml解析
//2.通過反射創(chuàng)建對象
Class clazz = Class.forName(classValue);
//3.創(chuàng)建對象
return (UserDao)clazz.newInstance();
}
}
二.IOC接口(BeanFactory)
1.IOC思想基于IOC容器完成,IOC容器底層就是對象工廠
2.Spring提供IOC容器實(shí)現(xiàn)兩種方式(兩種接口)
(1)BeanFactory : IOC容器基本實(shí)現(xiàn)兴溜,是Spring內(nèi)部的使用接口侦厚,不提供開發(fā)人員進(jìn)行使用
加載配置文件時(shí)不會(huì)創(chuàng)建對象,在獲取對象(使用)才去創(chuàng)建對象
(2)ApplicationContext : BeanFactory接口的子接口拙徽,提供了更多更強(qiáng)大的功能刨沦,一般由開發(fā)人員使用
加載配置文件時(shí)就會(huì)把在配置文件對象進(jìn)行創(chuàng)建
三.IOC操作Bean管理
1.什么是Bean管理
(1)Spring創(chuàng)建對象
(2)Spring注入屬性
2.Bean管理操作有兩種方式
1.基于xml配置文件方式實(shí)現(xiàn)
1.基于xml方式創(chuàng)建對象
<bean id="user" class="com.it.spring5.User"></bean>
(1)在Spring配置文件中,使用bean標(biāo)簽膘怕,標(biāo)簽里添加對應(yīng)屬性想诅,就可以實(shí)現(xiàn)對象創(chuàng)建
(2)在bean標(biāo)簽有很多屬性,常用屬性
id屬性:為對象取唯一標(biāo)識(shí)
class屬性:類全路徑(包類路徑)
2.基于xml方式注入屬性
(1)DI:依賴注入岛心,就是注入屬性
1.第一種注入方式:使用set方法進(jìn)行注入
1.創(chuàng)建類来破,定義屬性和對應(yīng)的set方法
2.在Spring配置文件配置對象創(chuàng)建,配置屬性注入
<!-- 2.set方法注入屬性 -->
<bean id="book" class="com.it.spring5.Book"></bean>
<!--
使用property完成屬性注入
name:類里面屬性名稱
value:向?qū)傩宰⑷氲闹? -->
<property name="bname" value="數(shù)據(jù)結(jié)構(gòu)"></property>
2.第二種注入方式:使用有參構(gòu)造函數(shù)進(jìn)行注入
(1)創(chuàng)建類忘古,定義屬性徘禁,創(chuàng)建屬性對應(yīng)有參構(gòu)造方法
(2)在Spring配置文件中配置
<!-- 有參構(gòu)造方法注入屬性-->
<bean id="orders" class="com.it.spring5.Orders">
<constructor-arg name="oname" value="筆記本"></constructor-arg>
<constructor-arg name="addrss" value="China"></constructor-arg>
<!-- 可以根據(jù)索引值對應(yīng)到屬性 -->
<!-- <constructor-arg index="" value=""></constructor-arg>-->
</bean>
3.p名稱空間注入
(1)使用p名稱空間注入,可以簡化基于xml配置方式
第一步 添加p名稱空間在配置文件中
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
第二部 進(jìn)行屬性注入髓堪,在bean標(biāo)簽里面進(jìn)行操作
<bean id="book" class="com.it.spring5.Book" p:bname="線代" p:bauthor="老師"></bean>
</beans>
3.xml注入其他類型屬性
1.字面量
(1)null值
<property name="address">
<null></null>
</property>