SpringIOC框架的簡(jiǎn)單實(shí)現(xiàn)步驟
簡(jiǎn)單介紹
依賴注入( Dependency Injection ,簡(jiǎn)稱 DI) 與控制反轉(zhuǎn) (IoC) 的含義相同,只不過(guò)這兩個(gè)稱呼是從兩個(gè)角度描述的同一個(gè)概念,具體如下:
- 依賴:bean對(duì)象的創(chuàng)建依賴于容器。
- 注入:bean對(duì)象中的所有屬性,由容器來(lái)注入。
- 控制反轉(zhuǎn)(IoC:依賴注入的另一種說(shuō)法是“控制反轉(zhuǎn)”,通俗的理解是:平常我們new一個(gè)實(shí)例,這個(gè)實(shí)例的控制權(quán)是我們程序員,而控制反轉(zhuǎn)是指new實(shí)例工作不由我們程序員來(lái)做而是交給spring容器來(lái)做
依賴注入可以有效的解耦合。
具體實(shí)現(xiàn)
有兩種實(shí)現(xiàn)的方法,一種是配置xml文件來(lái)實(shí)現(xiàn),另一種是通過(guò)參數(shù)實(shí)現(xiàn),來(lái),找個(gè)簡(jiǎn)單的例子讓咱們上手試一試。(Intellij IDEA 2020)
首先,咱們先配置一下相關(guān)的jar包(pom.xml)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.5</version>
</dependency>
創(chuàng)建一個(gè)Pet接口,存放方法say()
public interface Pet {
void say();
}
創(chuàng)建一個(gè)Person類
public class Person {
private String name;
private Pet pet;
public void setName(String name) {
this.name = name;
}
public void setPet(Pet pet) {
this.pet = pet;
}
public void keepPet() {
System.out.println(name + " 比" + pet + " 可愛,因?yàn)樗鼤?huì)說(shuō)");
pet.say();
}
}
創(chuàng)建一個(gè)Dog類,繼承Pet接口
public class Dog implements Pet{
private String name;
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
public void say(){
System.out.println("WangWang");
}
}
重點(diǎn)來(lái)了,配置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 id="dog" class="Ex_04.Dog">
<property name="name" value="哈士奇"></property>
</bean>
<bean id="person" class="Ex_04.Person">
<property name="name" value="拉布拉多"></property>
<property name="pet" ref="dog"></property>
</bean>
</beans>
- bean中class為你所創(chuàng)建的包的地址,即Dao層,Service層的地址,為了方便我將其放在一起。
- 為給dog類中name屬性賦值哈士奇。
- 元素value屬性為一個(gè)具體的值,ref為引用,該代碼中“ ref="dog" ”對(duì)應(yīng)的是dog類的屬性name,相當(dāng)于new,此處可以體現(xiàn)解耦合。
基本類已創(chuàng)建完畢,讓我們來(lái)創(chuàng)建一個(gè)實(shí)現(xiàn)類
輸出結(jié)果為:拉布拉多 比哈士奇 可愛,因?yàn)樗鼤?huì)說(shuō)WangWang
總結(jié)
以上就就是以xml文件實(shí)現(xiàn)SpringIOC框架,如有錯(cuò)誤,麻煩指出,感謝耐心到現(xiàn)在的朋友
到此這篇關(guān)于SpringIOC框架簡(jiǎn)單實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)SpringIOC框架簡(jiǎn)單實(shí)現(xiàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java開發(fā)中的OOM內(nèi)存溢出問(wèn)題詳解
這篇文章主要介紹了Java開發(fā)中的OOM內(nèi)存溢出問(wèn)題詳解,OOM,全稱?Out?Of?Memory,意思是內(nèi)存耗盡或內(nèi)存溢出,當(dāng)JVM因?yàn)闆](méi)有足夠的內(nèi)存來(lái)為對(duì)象分配空間并且垃圾回收器也已經(jīng)沒(méi)有空間可回收時(shí),就會(huì)拋出這個(gè)?error,需要的朋友可以參考下2023-08-08
Java技巧函數(shù)方法實(shí)現(xiàn)二維數(shù)組遍歷
這篇文章主要介紹了Java技巧函數(shù)方法實(shí)現(xiàn)二維數(shù)組遍歷,二維數(shù)組遍歷,每個(gè)元素判斷下是否為偶數(shù),相關(guān)內(nèi)容需要的小伙伴可以參考一下2022-08-08
解讀線程池-Executors的newSingleThreadExecutor和newFixedThreadPool(1
這篇文章主要介紹了解讀線程池-Executors的newSingleThreadExecutor和newFixedThreadPool(1)區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
SpringBoot啟動(dòng)過(guò)程的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot啟動(dòng)過(guò)程的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
String類型傳遞是值傳遞,char[]類型傳遞是引用傳遞的實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇String類型傳遞是值傳遞,char[]類型傳遞是引用傳遞的實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看不2016-09-09
使用mybatisPlus的queryWrapper做左聯(lián)接,內(nèi)聯(lián)接方式
本文介紹了如何使用Mybatis-Plus的QueryWrapper進(jìn)行SQL查詢,包括左連接、內(nèi)連接等操作,通過(guò)示例代碼展示了如何構(gòu)建復(fù)雜的SQL查詢,并將結(jié)果存儲(chǔ)在List對(duì)象中返回,希望給讀者提供參考2025-03-03
SpringBoot在容器中創(chuàng)建實(shí)例@Component和@bean有什么區(qū)別
這篇文章主要介紹了SpringBoot在容器中創(chuàng)建實(shí)例@Component和@bean有什么區(qū)別,在Spring Boot中,@Component注解和@Bean注解都可以用于創(chuàng)建bean。它們的主要區(qū)別在于它們的作用范圍和創(chuàng)建方式2023-03-03
Java實(shí)戰(zhàn)之實(shí)現(xiàn)用戶登錄
這篇文章主要介紹了Java實(shí)戰(zhàn)之實(shí)現(xiàn)用戶登錄,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04

