您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Spring的核心基礎(chǔ)IOC與DI怎么掌握”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“Spring的核心基礎(chǔ)IOC與DI怎么掌握”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
Spring技術(shù)是JavaEE開發(fā)必備技能,企業(yè)開發(fā)技術(shù)選型命中率>90%
專業(yè)角度
簡化開發(fā),降低企業(yè)級開發(fā)的復(fù)雜性框架整合,高效整合其他技術(shù),提高企業(yè)級應(yīng)用開發(fā)與運行效率
簡化開發(fā)
IOC(反轉(zhuǎn)控制)
AOP(面向切面編程)
事務(wù)處理
框架整合
MyBatis
MyBatis-plus
Struts
Struts2
Hibernate……
官網(wǎng):https://spring.ioSpring發(fā)展到今天已經(jīng)形成了一種開發(fā)的生態(tài)圈,Spring提供了若干個項目,每個項目用于完成特定的功能。
注意:現(xiàn)在已經(jīng)有spring6了哦!
Spring Framework是Spring生態(tài)圈中最基礎(chǔ)的項目,是其他項目的根基
問題導入
IOC(Inversion of Control)控制反轉(zhuǎn)
使用對象時,由主動new產(chǎn)生對象轉(zhuǎn)換為由外部
提供對象,此過程中對象創(chuàng)建控制權(quán)由程序轉(zhuǎn)移到外部,此思想稱為控制反轉(zhuǎn)。通俗的講就是“將new對象的權(quán)利交給Spring,我們從Spring中獲取對象使用即可
”
Spring技術(shù)對IoC思想進行了實現(xiàn)
Spring提供了一個容器,稱為IOC容器
,用來充當IoC思想中的“外部”IOC容器負責對象的創(chuàng)建、初始化等一系列工作,被創(chuàng)建或被管理的對象在IoC容器中統(tǒng)稱為Bean
DI(Dependency Injection)依賴注入
在容器中建立bean與bean之間的依賴關(guān)系的整個過程,稱為依賴注入。
目標:充分解耦
使用IoC容器管理bean(IOC)
在IoC容器內(nèi)將有依賴關(guān)系的bean進行關(guān)系綁定(DI)
最終效果
使用對象時不僅可以直接從IoC容器中獲取,并且獲取到的bean已經(jīng)綁定了所有的依賴關(guān)系
問題導入
<bean>標簽中id屬性和class屬性的作用是什么?
管理什么?(Service與Dao)
如何將被管理的對象告知IOC容器?(配置文件)
被管理的對象交給IOC容器,如何獲取到IoC容器?(接口)
IOC容器得到后,如何從容器中獲取bean?(接口方法)
使用Spring導入哪些坐標?(pom.xml)
【第一步】導入Spring坐標 【第二步】定義Spring管理的類(接口) 【第三步】創(chuàng)建Spring配置文件,配置對應(yīng)類作為Spring管理的bean對象 【第四步】初始化IOC容器(Spring核心容器/Spring容器),通過容器獲取bean對象
【第一步】導入Spring坐標
<dependencies> <!--導入spring的坐標spring-context,對應(yīng)版本是5.2.10.RELEASE--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.10.RELEASE</version> </dependency> </dependencies>
【第二步】定義Spring管理的類(接口)
BookDao接口和BookDaoImpl實現(xiàn)類
public interface BookDao { public void save(); } public class BookDaoImpl implements BookDao { public void save() { System.out.println("book dao save ..."); } }
BookService接口和BookServiceImpl實現(xiàn)類
public interface BookService { public void save(); } public class BookServiceImpl implements BookService { private BookDao bookDao = new BookDaoImpl(); public void save() { System.out.println("book service save ..."); bookDao.save(); } }
【第三步】創(chuàng)建Spring配置文件,配置對應(yīng)類作為Spring管理的bean對象
定義applicationContext.xml配置文件并配置BookServiceImpl
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- bean標簽:表示配置bean id屬性:表示給bean起名字 class屬性:表示給bean定義類型 --> <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl"></bean> </beans>
注意事項:bean定義時id屬性在同一個上下文中(IOC容器中)不能重復(fù)
【第四步】初始化IOC容器(Spring核心容器/Spring容器),通過容器獲取Bean對象
public class App { public static void main(String[] args) { //1.創(chuàng)建IoC容器對象,加載spring核心配置文件 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); //2 從IOC容器中獲取Bean對象(BookService對象) BookService bookService= (BookService)ctx.getBean("bookService"); //3 調(diào)用Bean對象(BookService對象)的方法 bookService.save(); } }
<property>標簽中name屬性和ref屬性的作用是什么?
基于IOC管理bean
Service中使用new形式創(chuàng)建的Dao對象是否保留?(否)
Service中需要的Dao對象如何進入到Service中?(提供方法)
Service與Dao間的關(guān)系如何描述?(配置)
【第一步】刪除使用new的形式創(chuàng)建對象的代碼
【第二步】提供依賴對象對應(yīng)的setter方法
【第三步】配置service與dao之間的關(guān)系
【第一步】刪除使用new的形式創(chuàng)建對象的代碼
public class BookServiceImpl implements BookService { private BookDao bookDao; //【第一步】刪除使用new的形式創(chuàng)建對象的代碼 public void save() { System.out.println("book service save ..."); bookDao.save(); } }
【第二步】提供依賴對象對應(yīng)的setter方法
public class BookServiceImpl implements BookService { private BookDao bookDao; public void save() { System.out.println("book service save ..."); bookDao.save(); } //【第二步】提供依賴對象對應(yīng)的setter方法 public void setBookDao(BookDao bookDao) { this.bookDao = bookDao; } }
【第三步】配置service與dao之間的關(guān)系
在applicationContext.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- bean標簽:表示配置bean id屬性:表示給bean起名字 class屬性:表示給bean定義類型 --> <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/> <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl"> <!--配置server與dao的關(guān)系 property標簽:表示配置當前bean的屬性 name屬性:表示配置哪一個具體的屬性 ref屬性:表示參照哪一個bean --> <property name="bookDao" ref="bookDao"/> </bean> </beans>
讀到這里,這篇“Spring的核心基礎(chǔ)IOC與DI怎么掌握”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。