ClassPathXmlApplicationContext:能夠加載類路徑下的配置文件
FileSystemXmlApplicationContext:能夠加載磁盤任意路徑下的配置文件(要有訪問權限)
AnnotationConfigApplicationContext:讀取註解建立容器
複製代碼
核心容器的兩個接口引起出的問題php
ApplicationContext: 單例對象使用 他在構建核心容器時,建立對象的策略是當即加載讀取完配置文件就建立配置文件中的對象java
BeanFactory:web
延遲加載的策略,根據Id獲取對象了纔開始建立對象spring
在spring的配置中使用bean標籤,配以id和class屬性以後,且沒有其餘屬性和標籤時.採用的就是默認構造函數建立bean對象,此時若是類中沒有默認構造函數則沒法建立數組
<bean id = "實際建立的對象名" class="對象類"></bean>
複製代碼
<bean id = "工廠類名" class="工廠方法類"></bean>
<bean id = "實際建立的對象名" factory-bean = "工廠類名" facatory-method = "工廠類內的構建方法 "></bean>
複製代碼
<bean id = "實際建立的對象名 " class = "工廠方法類" facatory-method = "工廠內的靜態方法"></bean>
複製代碼
1)singleton(單例)session
2)prototype(多例)函數
3)request(做用於web應用的請求範圍)spa
4)session(做用於web應用的會話範圍)prototype
5)global-session(做用於集羣的會話範圍若是沒有則是session)code
1)出生:當容器建立是對象出生
2)存在:只要容器還在,對象存在
3)死亡:容器銷燬,對象死亡
4)總結:與容器生命週期相同
1)出生:使用對象時建立對象
2)存在:對象在使用過程當中就存在
3)死亡:對象長時間沒用由Java的垃圾回收機制
1)基本類型和String
2)其餘bean類型(在配置文件中或註解配置過的bean)
3)複雜類型/集合類型
1)使用構造函數提供
2)使用set方法提供
3)使用註解提供
1)使用標籤:constructor-arg
2)標籤出現的位置:bean標籤的內部
3)標籤中的屬性
type:用於指定要注入的數據的數據類型
index:用於指定要注入的數據給構造函數中指定索引位置的參數賦值,索引的位置從0開始
name:用於指定給構造函數中指定名字的參數賦值
value:用於給基本類型和String類型的數據
ref:其餘的bean類型數據
複製代碼
<bean id = " " class = " ">
<constructor-arg name = " " value = " "></constructor-arg>
<constructor-arg name = " " ref = "a"></constructor-arg>
</bean>
<bean id = "a" class = " "></bean>
複製代碼
1)標籤:property
2)出現的位置:bean標籤的內部
3)標籤的屬性:
name:用於指定給構造函數中指定名字的參數賦值
value:用於給基本類型和String類型的數據
ref:其餘的bean類型數據
複製代碼
<bean id = " " class = " ">
<property name = " " value = " "></property>
<property name = " " ref = " "></property>
</bean>
複製代碼
3.複雜類型的注入
<bean id = " " class = " ">
<property name = " 一個字符串數組">
<array>
<value>String</value>
<value>String</value>
<value>String</value>
</array>
</property>
</bean>
<bean id = " " class = " ">
<property name = " 一個list">
<list>
<value>String</value>
<value>String</value>
<value>String</value>
</list>
</property>
</bean>
<bean id = " " class = " ">
<property name = " 一個set">
<set>
<value>String</value>
<value>String</value>
<value>String</value>
</set>
</property>
</bean>
<bean id = " " class = " ">
<property name = " 一個set">
<map>
<entry key = " " value = " "></value>
<entry key = " ">
<value>String</value>
</entry>
</map>
</property>
</bean>
<bean id = " " class = " ">
<property name = " 一個set">
<props>
<prop key = " ">String</prop>
</props>
</property>
</bean>
複製代碼
用於給List結構集合注入的標籤
list array set
用於給Map結構集合注入的標籤
map props
結構相同,標籤能夠互換
1.用於建立對象的註解
與xml配置文件中編寫一個bean標籤實現的功能是同樣的
2.用於注入數據的註解
與xml配置文件中編寫一個property標籤實現的功能是同樣的
3.用於改變做用範圍的註解
在bean標籤中使用scope屬性實現的功能是同樣的
4.和生命週期想換的註解
在bean標籤中使用init-method和destory-method屬性實現的功能是同樣的
用於建立對象的
做用:用於把當前類對象存入spring容器中
屬性:
value: 用於指定bean的id.當咱們不寫時,他的默認值是當前類名,類名首字母小寫.
告知Spring在建立容器是要掃描的包,配置所須要的標籤不是在beans的約束中,而是在一個名稱爲context名稱空間和約束中
<context:component-scan pase-package=" "></context:component-scan>
複製代碼
Aopjar包xml配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd ">
複製代碼
@Contorller@Service@Repository
@Contorller通常用於表現層
@Service通常用於業務層
@Repository通常用於持久層
做用和屬性和component同樣
用於注入數據
做用:自動按照類型注入,只要容器中有惟一的bean對象類型和要注入的變量類型匹配
若是沒有任何bean類型匹配則報錯
多個類型匹配時找到類型相同的集合再匹配變量名
出現位置:能夠出如今變量上和方法上
在使用註解注入時,set方法就不是必須的了
@Qualifier
做用:在按照類中注入的基礎之上再按照名稱注入,再給類成員注入時不能單獨使用,在給方法參數注入式能夠
@Resource
做用:直接按照bean的id注入.他能夠獨立使用
屬性:name:用於指定bean的id
都只能注入其餘bean類型的數據,而基本類型和Stirng類型沒法使用上述註解實現
@value
做用:用於注入基本類型和String類型的數據
屬性:
value:用於指定數據的值,它可使用spring中Spel
SpEl的寫法:${表達式};
做用:用於指定bean的範圍
屬性:singleton,prototype;
做用:用於指定初始化方法