10-20 Spring框架(二)—— IoC核心
一、概念
IOC(控制反轉)就是應用本身不負責依賴物件的建立及維護,依賴物件的建立及維護是由外部的容器負責,這樣控制權就由應用轉移到外部容器,控制權的轉移就是所謂的反轉。
控制權轉移帶來的好處就是降低了業務物件之間的依賴程度(低耦合,高內聚)
二、DI(依賴注入)
DI(Dependency Injection,依賴注入)可以向某個物件動態的注入它所依賴的其他物件
依賴注入的方式
1.構造器注入
2.方法注入
3.介面注入
注意:Spring的IOC容器僅支援構造器和方法注入
三、IOC容器
Spring IOC容器是指實現IOC(控制反轉)和DI(依賴注入)概念的一個Spring元件,開發者使用IOC容器可以獲得IOC/DI帶來的降低耦合度和簡化開發的特性
3.1Bean
Spring 中使用 Bean 來表示應用元件,一個 Bean 元件可以是任何形式的簡單 Java 類例項,Spring 中使用 IoC 容器來管理 Bean 的生命週期(Bean 的建立和銷燬)
3.2 BeanFactory(Bean工廠)
1.BeanFactory是Spring框架最核心的介面,它提供了高階的IOC的配置機制;BeanFactory使管理不同型別的java物件成為可能。
2.BeanFactory是Spring框架 的基礎設施,屬於底層封裝元件,專供Spring框架內部使用。
3.3 ApplicationContext(應用上下文)
ApplicationContext是建立zaiBeanfactory基礎之上,提供了更多的面向應用的功能。一般稱beanfactory為IOC容器,而稱ApplicationContext為應用上下文
ApplicationContext面向Spring框架的開發者,屬於上乘封裝元件,專供開發者使用
通過ApplicationContext應用方法上下文例項呼叫其getBean()從IOC容器中即可獲得Bean物件例項。
3.4Spring有三種啟動IOC容器的方式
1.classpathXMLApplicationContext(相對路徑)
ApplicationContext ctx = new ClassPathxmlApplicationComtext(“包路徑/beans.xml”)
2.fileSystemXMLApplicationContext(絕對路徑)
檔案路徑/beans.xml
3.XMLwebApplicationContext(web配置路徑)
四、裝配bean
裝配 Bean 是指在 Spring IoC 容器中建立 Bean 元件和建立 Bean 元件之間的依賴關係的過程,即實現 IoC(控制反轉)和 DI(依賴注入)。
Spring 支援三種裝配 Bean 的方式:
基於 XML 配置裝配 Bean
基於註解裝配 Bean
基於 Java 類裝配 Bean
4.1開啟註解
<!--Spring IoC 容器需要在 Spring 配置中開啟註解(預設禁用註解)--> <context:annotation-config /> <!--Spring IoC 容器需要自動檢測 Bean(掃描 Java 類中 Bean 元件) --> <context:component-scan packages=“包路徑”/>
4.2定義Bean元件註解(ioc)
@Component
標識java類為Spring Bean元件(通用註解)
@Controller
標識三層架構中表現層的java類Spring Bean元件
@Service
標識三層架構中業務邏輯層的java類Spring Bean元件
@Repository
標識三層架構中資料訪問層或持久層的java類Spring Bean元件
4.3Bean元件依賴注入註解
@Autowired
可以用於標註setter方法
可以用於標註構造器
可以用於直接標註屬性(常用)
@Resource
使用與@Autowired註解相同
@Qualifier
明確指定需要自動裝配的Bean元件