欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入探究Spring IOC和DI的區(qū)別

 更新時(shí)間:2023年10月22日 10:18:53   作者:小電玩  
很多人都會(huì)把ioc和di說(shuō)成同一個(gè)東西,其實(shí)IOC和DI雖然在概念上可以籠統(tǒng)地視為同一事物,但其本質(zhì)上存在區(qū)別,因此,我們希望能夠更加嚴(yán)謹(jǐn)?shù)貐^(qū)分這兩個(gè)概念,以更好地理解和應(yīng)用它們,需要的朋友可以參考閱讀本文

一,介紹

前言

很多人都會(huì)把ioc和di說(shuō)成同一個(gè)東西,其實(shí)IOC和DI雖然在概念上可以籠統(tǒng)地視為同一事物,但其本質(zhì)上存在區(qū)別。IOC(Inverse of Control,控制反轉(zhuǎn))從容器的角度描述,而DI(Dependency Injection,依賴注入)則從應(yīng)用程序的角度描述。換言之,IOC是依賴倒置原則的設(shè)計(jì)思想,而DI則是該原則的具體實(shí)現(xiàn)方式。因此,我們希望能夠更加嚴(yán)謹(jǐn)?shù)貐^(qū)分這兩個(gè)概念,以更好地理解和應(yīng)用它們。

1.什么是IOC

Spring IOC(控制反轉(zhuǎn))是一種設(shè)計(jì)模式,是Spring框架的核心,它通過(guò)將對(duì)象之間的依賴關(guān)系交由容器來(lái)管理和注入,實(shí)現(xiàn)了組件之間解耦、松耦合的目的。在傳統(tǒng)的Java開(kāi)發(fā)中,對(duì)象之間的依賴關(guān)系通常是通過(guò)手動(dòng)創(chuàng)建和維護(hù)對(duì)象之間的引用關(guān)系來(lái)實(shí)現(xiàn)的,這樣會(huì)帶來(lái)很多問(wèn)題,例如代碼的可讀性、可維護(hù)性、可測(cè)試性等方面都會(huì)受到影響。使用IOC后,無(wú)需手動(dòng)創(chuàng)建和維護(hù)對(duì)象之間的引用關(guān)系,因?yàn)镾pring容器將自動(dòng)完成這些工作,并且可以根據(jù)需要?jiǎng)討B(tài)地注入不同類型的對(duì)象或數(shù)據(jù),從而實(shí)現(xiàn)靈活性更強(qiáng)、代碼質(zhì)量更高的應(yīng)用程序開(kāi)發(fā)。

簡(jiǎn)單理解就是原本我們創(chuàng)建對(duì)象的過(guò)程是我們手動(dòng)來(lái)管理的,比如User user = new User(); 而使用ioc就是來(lái)解決這個(gè)問(wèn)題的,交給容器來(lái)管理創(chuàng)建以及管理的過(guò)程

IOC容器的初始化有兩種方式:餓漢式初始化和懶加載。

餓漢式初始化是指在容器啟動(dòng)時(shí),立即進(jìn)行對(duì)象的創(chuàng)建和初始化。這種方式適合單例對(duì)象,可以保證對(duì)象在系統(tǒng)啟動(dòng)時(shí)便可用,避免因?yàn)閷?duì)象未初始化而導(dǎo)致的空指針異常等問(wèn)題。

懶加載則是指只有在需要使用對(duì)象時(shí),才進(jìn)行對(duì)象的創(chuàng)建和初始化。這種方式適合非單例對(duì)象,可以降低系統(tǒng)啟動(dòng)時(shí)間和內(nèi)存消耗。Spring IoC容器默認(rèn)使用懶加載方式,只有在使用`@Lazy`注解或者在配置文件中進(jìn)行特別聲明后,才會(huì)使用餓漢式初始化方式。

下面是兩種初始化方式的示例:

1. 餓漢式初始化方式

@Component
public class MySingletonBean {
    // ...
}
 
@Configuration
public class AppConfig {
    @Bean
    public MySingletonBean mySingletonBean() {
        return new MySingletonBean();
    }
}

在這個(gè)示例中,`MySingletonBean`是一個(gè)單例對(duì)象,通過(guò)在配置類中定義`@Bean`方法來(lái)進(jìn)行餓漢式初始化。

2. 懶加載方式

@Component
@Lazy
public class MyLazyBean {
    // ...
}

在這個(gè)示例中,`MyLazyBean`是一個(gè)非單例對(duì)象,在它上面使用了`@Lazy`注解,表示使用懶加載方式進(jìn)行初始化。當(dāng)應(yīng)用程序需要使用`MyLazyBean`時(shí),才會(huì)觸發(fā)對(duì)象的創(chuàng)建和初始化。

2.什么是DI

Spring DI(依賴注入)是Spring框架中的一個(gè)核心特性,它是實(shí)現(xiàn)控制反轉(zhuǎn)(IOC)的具體方式之一。DI指的是通過(guò)外部配置或注解的方式,將一個(gè)對(duì)象所依賴的其他對(duì)象(依賴)自動(dòng)注入到該對(duì)象中,而不需要在代碼中顯式地創(chuàng)建和管理這些依賴對(duì)象。

通過(guò)使用DI,我們可以將對(duì)象之間的依賴關(guān)系從代碼中解耦出來(lái),提高代碼的可讀性、可維護(hù)性和可測(cè)試性。Spring框架通過(guò)提供不同的DI實(shí)現(xiàn)方式(如構(gòu)造方法注入、Setter方法注入、注解注入等),使得開(kāi)發(fā)者可以根據(jù)需求選擇合適的注入方式。

例如,我們可以使用構(gòu)造方法注入,在對(duì)象創(chuàng)建時(shí)通過(guò)構(gòu)造方法接收所需的依賴對(duì)象;或者使用Setter方法注入,在對(duì)象創(chuàng)建后通過(guò)Setter方法設(shè)置所需的依賴對(duì)象;還可以使用注解注入,在代碼中使用注解標(biāo)記需要注入的依賴對(duì)象。這樣,我們就能夠以一種更靈活、簡(jiǎn)潔的方式管理對(duì)象之間的依賴關(guān)系,提升開(kāi)發(fā)效率和代碼質(zhì)量。

3.為什么要使用控制反轉(zhuǎn),能給我?guī)?lái)哪些好處

知其然而不知其所以然,是指只知道事物的表面現(xiàn)象!只知道用只是之所以然要明白為什么要用才是知其然而知其所以然。用一東西的時(shí)候而不是會(huì)用就可以了,要明白為什么要用,難道就沒(méi)有別的替代方法嗎,答案肯定是有的,有人會(huì)說(shuō)就是好用才用的,說(shuō)的沒(méi)有錯(cuò),但是這樣我認(rèn)為并沒(méi)有去思考為什么要用它為不用別的。接下來(lái)我來(lái)重點(diǎn)講解

使用Spring的控制反轉(zhuǎn)(IOC)能夠帶來(lái)以下好處:

1. 解耦合:將程序中的依賴關(guān)系轉(zhuǎn)到Spring容器進(jìn)行配置,可以減少程序模塊之間的耦合。這樣,當(dāng)一個(gè)組件發(fā)生改變時(shí),不會(huì)影響到系統(tǒng)中其他組件的正常運(yùn)行。

2. 管理對(duì)象的生命周期:Spring容器負(fù)責(zé)管理對(duì)象的生命周期,當(dāng)對(duì)象不再被使用時(shí),容器會(huì)自動(dòng)銷毀其實(shí)例,這可以避免內(nèi)存泄漏等問(wèn)題。

3. 提高代碼重用性:通過(guò)將業(yè)務(wù)邏輯從代碼中分離出來(lái),可以使得代碼更加可重用,降低代碼的維護(hù)成本。

4. 模塊化開(kāi)發(fā):Spring容器可以組織程序中的所有對(duì)象,使得代碼具有良好的層次結(jié)構(gòu)和模塊化特性,提高代碼的可讀性和可維護(hù)性。

5. 容易測(cè)試:通過(guò)控制反轉(zhuǎn),我們可以使用Mock對(duì)象來(lái)替代真正的對(duì)象進(jìn)行單元測(cè)試,從而使得測(cè)試變得更加容易,可以提高代碼的質(zhì)量。

總之,使用Spring控制反轉(zhuǎn)可以使得代碼的耦合度更低、可重用性更高、可維護(hù)性更好,使得開(kāi)發(fā)工作變得更加高效。

二,代碼具體實(shí)現(xiàn)

在Spring Boot中,IoC的實(shí)現(xiàn)方式與傳統(tǒng)的Spring框架類似,但會(huì)更加簡(jiǎn)化和自動(dòng)化。下面是一個(gè)使用Spring Boot實(shí)現(xiàn)IoC的示例:

1. 創(chuàng)建一個(gè)Spring Boot項(xiàng)目,并添加所需的依賴。

2. 編寫一個(gè)接口和相應(yīng)的實(shí)現(xiàn)類:

// 定義一個(gè)接口
public interface MessageService {
    String getMessage();
}
 
// 實(shí)現(xiàn)接口
@Service
public class HelloWorldService implements MessageService {
    @Override
    public String getMessage() {
        return "Hello, World!";
    }
}

3. 在啟動(dòng)類上使用`@SpringBootApplication`注解,它包含了`@ComponentScan`注解,來(lái)自動(dòng)掃描并創(chuàng)建所有需要的Bean。

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

4. 在其他需要使用該服務(wù)的地方,可以通過(guò)`@Autowired`注解來(lái)自動(dòng)注入該Bean。

@RestController
public class MyController {
    @Autowired
    private MessageService messageService;
 
    @GetMapping("/message")
    public String getMessage() {
        return messageService.getMessage();
    }
}

在這個(gè)示例中,我們創(chuàng)建了一個(gè)名為 `HelloWorldService` 的bean,并使用 `@Service` 注解來(lái)標(biāo)識(shí)它是一個(gè)服務(wù)類。然后,在啟動(dòng)類中使用 `@SpringBootApplication` 注解來(lái)開(kāi)啟Spring Boot應(yīng)用,并自動(dòng)掃描和創(chuàng)建所有需要的Bean。

在 `MyController` 中,我們使用 `@Autowired` 注解自動(dòng)注入了 `MessageService` 類型的bean。然后,在 `/message` 接口中調(diào)用 `getMessage()` 方法并返回結(jié)果。

Spring Boot會(huì)自動(dòng)注入相關(guān)的Bean,并管理它們的生命周期,無(wú)需手動(dòng)配置XML文件。同時(shí),Spring Boot也提供了默認(rèn)的配置,讓開(kāi)發(fā)者可以快速開(kāi)始項(xiàng)目,減少了繁瑣的配置過(guò)程。

1.詳細(xì)詳解 IOC

在經(jīng)典的三層架構(gòu)中,IoC(控制反轉(zhuǎn))的具體表示通常是在數(shù)據(jù)訪問(wèn)層(Repository或DAO)和業(yè)務(wù)邏輯層(Service)之間的交互。具體來(lái)說(shuō),IoC容器負(fù)責(zé)管理并注入數(shù)據(jù)訪問(wèn)層所需的依賴對(duì)象,例如數(shù)據(jù)庫(kù)連接、事務(wù)管理等。

在這種情況下,數(shù)據(jù)訪問(wèn)層(Repository或DAO)負(fù)責(zé)與數(shù)據(jù)庫(kù)進(jìn)行交互,而業(yè)務(wù)邏輯層(Service)則負(fù)責(zé)處理業(yè)務(wù)規(guī)則和流程。業(yè)務(wù)邏輯層需要依賴數(shù)據(jù)訪問(wèn)層提供的持久化功能,但它并不直接依賴具體的實(shí)現(xiàn)類,而是通過(guò)IoC容器來(lái)獲取相應(yīng)的依賴對(duì)象。

通過(guò)IoC容器的管理,我們可以在業(yè)務(wù)邏輯層中使用依賴注入(Dependency Injection)來(lái)獲取和使用數(shù)據(jù)訪問(wèn)層的對(duì)象,從而實(shí)現(xiàn)了對(duì)象之間的解耦和靈活性。這樣,在需要替換或擴(kuò)展特定功能時(shí),只需調(diào)整IoC容器的配置即可,而不需要修改業(yè)務(wù)邏輯層的代碼。

總結(jié)起來(lái),IoC的具體表示通常體現(xiàn)在數(shù)據(jù)訪問(wèn)層和業(yè)務(wù)邏輯層之間的交互,通過(guò)IoC容器的管理和依賴注入來(lái)實(shí)現(xiàn)對(duì)象的解耦和可替換性。這樣可以提高代碼的可維護(hù)性和可測(cè)試性,并支持應(yīng)用程序的靈活性和擴(kuò)展性。

2.詳細(xì)詳解 DI

DI(依賴注入)是IoC(控制反轉(zhuǎn))的一種實(shí)現(xiàn)方式,它通過(guò)將對(duì)象的依賴關(guān)系交由容器來(lái)管理,從而解耦對(duì)象之間的依賴關(guān)系。而@Autowired注解是Spring框架中實(shí)現(xiàn)依賴注入的一種方式。使用@Autowired注解可以將需要依賴的對(duì)象自動(dòng)注入到目標(biāo)對(duì)象中,由Spring容器負(fù)責(zé)創(chuàng)建和管理這些被注入的Bean對(duì)象。

對(duì)于@Autowired注解,它確實(shí)是由它來(lái)實(shí)現(xiàn)依賴注入,將依賴對(duì)象注入到IOC容器中,并由容器來(lái)負(fù)責(zé)管理Bean對(duì)象的生命周期。當(dāng)我們?cè)谛枰褂媚硞€(gè)依賴對(duì)象的地方添加@Autowired注解后,Spring會(huì)自動(dòng)掃描并查找與該依賴類型匹配的Bean對(duì)象,并自動(dòng)將其注入進(jìn)來(lái)。

所以您可以說(shuō)@Autowired注解可以實(shí)現(xiàn)依賴注入,由它將依賴對(duì)象注入到IoC容器進(jìn)行管理,并由容器負(fù)責(zé)管理Bean對(duì)象的生命周期。非常感謝您的理解和提問(wèn)!

簡(jiǎn)單來(lái)說(shuō) 而di就好理解了@Autowired注解 由它依賴注入到ioc容器中由容器來(lái)管理bean的生命周期

三,DI依賴注入的幾種實(shí)現(xiàn)方式

我來(lái)給您提供幾種常見(jiàn)的Spring DI(依賴注入)實(shí)現(xiàn)方式,并附上相應(yīng)的代碼示例。

1. 構(gòu)造函數(shù)注入(Constructor Injection):

public class UserService {
    private UserRepository userRepository;
 
    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
 
    // 其他方法...
}

2. 屬性注入(Setter Injection):

public class UserService {
    private UserRepository userRepository;
 
    @Autowired
    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
 
    // 其他方法...
}

3. 接口注入(Interface Injection):

public interface UserRepositoryAware {
    void setUserRepository(UserRepository userRepository);
}
 
public class UserService implements UserRepositoryAware {
    private UserRepository userRepository;
 
    @Override
    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
 
    // 其他方法...
}

5. XML配置注入(XML Configuration Injection):
在XML配置文件中定義Bean和依賴項(xiàng),并通過(guò)<property>元素進(jìn)行注入。示例:

<bean id="userRepository" class="com.example.UserRepositoryImpl" />
<bean id="userService" class="com.example.UserService">
    <property name="userRepository" ref="userRepository" />
</bean>

上述示例展示了幾種常見(jiàn)的Spring DI實(shí)現(xiàn)方式。根據(jù)您的需求和項(xiàng)目結(jié)構(gòu),選擇適合的方式來(lái)實(shí)現(xiàn)依賴注入。 

四,@Autowired,@Resource

1.介紹

`@Autowired`和`@Resource`都是Java的注解,用于實(shí)現(xiàn)依賴注入(DI)功能。它們可以將依賴對(duì)象自動(dòng)注入到需要的地方,簡(jiǎn)化了手動(dòng)創(chuàng)建和管理對(duì)象之間的依賴關(guān)系的過(guò)程。

1. `@Autowired`注解:

   - `@Autowired`是Spring框架提供的注解,用于自動(dòng)裝配依賴對(duì)象。

   - 使用`@Autowired`可以直接在字段、構(gòu)造方法、Setter方法或者任意方法上標(biāo)注,Spring將根據(jù)類型進(jìn)行自動(dòng)裝配。如果有多個(gè)合適的候選對(duì)象,可以使用`@Qualifier`注解指定具體的bean名稱。

   - 示例:

@Resource
private UserService userService;

Spring將會(huì)自動(dòng)尋找名為`userService`的`UserService`類型的bean,并將其注入到該字段中。

2. `@Resource`注解:

   - `@Resource`是JavaEE標(biāo)準(zhǔn)中定義的注解,也可以實(shí)現(xiàn)依賴注入的功能。

   - `@Resource`既可以根據(jù)名稱進(jìn)行自動(dòng)裝配,也可以根據(jù)類型進(jìn)行自動(dòng)裝配,具備更強(qiáng)的靈活性,默認(rèn)按照名稱進(jìn)行裝配。

   - 示例:

@Resource
     private UserService userService;

@Resource`將會(huì)根據(jù)字段名稱`userService`來(lái)查找并注入對(duì)應(yīng)的bean。

兩者的使用場(chǎng)景和功能類似,但在具體實(shí)現(xiàn)細(xì)節(jié)和使用上有一些差異。一般來(lái)說(shuō),如果項(xiàng)目使用的是Spring框架,推薦使用`@Autowired`注解;如果是JavaEE標(biāo)準(zhǔn)的項(xiàng)目,可以使用`@Resource`注解。當(dāng)然,在實(shí)際使用中也可以根據(jù)具體需求選擇合適的注解。

2.區(qū)別

`@Autowired`和`@Resource`注解的區(qū)別如下:

1. 來(lái)源:`@Autowired`是Spring框架提供的注解,而`@Resource`是JavaEE標(biāo)準(zhǔn)中定義的注解。

2. 自動(dòng)裝配方式:`@Autowired`按照類型進(jìn)行自動(dòng)裝配,默認(rèn)情況下要求依賴對(duì)象必須存在。如果存在多個(gè)匹配的bean,可以使用`@Qualifier`注解指定具體的bean名稱。而`@Resource`默認(rèn)按照名稱進(jìn)行自動(dòng)裝配,可以根據(jù)`name`屬性指定特定的bean名稱,也可以根據(jù)`type`屬性進(jìn)行按類型查找。

3. 包含范圍:`@Autowired`只能用于字段、構(gòu)造方法、Setter方法或者任意方法上。而`@Resource`既可以標(biāo)注在字段上,也可以標(biāo)注在setter方法上。

4. 引入的包:`@Autowired`需要導(dǎo)入`org.springframework.beans.factory.annotation.Autowired`包,而`@Resource`需要導(dǎo)入`javax.annotation.Resource`包。

5. 注解來(lái)源:`@Autowired`是Spring框架自帶的注解,不依賴于JavaEE環(huán)境。而`@Resource`是JavaEE標(biāo)準(zhǔn)中定義的注解,它依賴于JavaEE環(huán)境。

綜上所述,`@Autowired`和`@Resource`注解在實(shí)現(xiàn)依賴注入功能上有些許差異。`@Autowired`更加強(qiáng)調(diào)按照類型進(jìn)行自動(dòng)裝配,而`@Resource`更加靈活,既可以按照名稱進(jìn)行自動(dòng)裝配,也可以按照類型進(jìn)行自動(dòng)裝配。在使用上,如果是Spring框架的項(xiàng)目,一般推薦使用`@Autowired`注解;如果是JavaEE標(biāo)準(zhǔn)的項(xiàng)目,可以使用`@Resource`注解。但實(shí)際選擇可以根據(jù)具體需求和個(gè)人偏好來(lái)確定。

五,總結(jié)

本文從IOC和DI的概念、區(qū)別以及具體實(shí)現(xiàn)方式入手,介紹了Spring框架中實(shí)現(xiàn)依賴注入的基本原理、好處和常見(jiàn)實(shí)現(xiàn)方式,最后對(duì)比了@Autowired和@Resource注解的區(qū)別和使用場(chǎng)景??傮w來(lái)說(shuō),IOC和DI是Spring框架的核心特性,通過(guò)容器管理和注入對(duì)象之間的依賴關(guān)系,極大地提高了代碼的靈活性、可維護(hù)性和可重用性。同時(shí),根據(jù)具體需求和項(xiàng)目結(jié)構(gòu),選擇合適的注解和實(shí)現(xiàn)方式可以更好地實(shí)現(xiàn)依賴注入的功能,提升開(kāi)發(fā)效率和代碼質(zhì)量。

以上就是深入探究Spring IOC和DI的區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于Spring IOC和DI的區(qū)別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringMVC接收多個(gè)對(duì)象的4種方法

    SpringMVC接收多個(gè)對(duì)象的4種方法

    這篇文章主要為大家詳細(xì)介紹了SpringMVC接收多個(gè)對(duì)象的4種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 在IDEA中如何設(shè)置最多顯示文件標(biāo)簽個(gè)數(shù)

    在IDEA中如何設(shè)置最多顯示文件標(biāo)簽個(gè)數(shù)

    在使用IDEA進(jìn)行編程時(shí),可能會(huì)同時(shí)打開(kāi)多個(gè)文件,當(dāng)文件過(guò)多時(shí),文件標(biāo)簽會(huì)占據(jù)大部分的IDEA界面,影響我們的編程效率,因此,我們可以通過(guò)設(shè)置IDEA的文件標(biāo)簽顯示個(gè)數(shù),來(lái)優(yōu)化我們的編程環(huán)境,具體的設(shè)置方法如下
    2024-10-10
  • SpringBoot中Bean拷貝及工具類封裝的實(shí)現(xiàn)

    SpringBoot中Bean拷貝及工具類封裝的實(shí)現(xiàn)

    本文主要介紹了SpringBoot中Bean拷貝及工具類封裝的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • SpringBoot對(duì)Controller進(jìn)行單元測(cè)試的實(shí)現(xiàn)代碼 附亂碼解決方案

    SpringBoot對(duì)Controller進(jìn)行單元測(cè)試的實(shí)現(xiàn)代碼 附亂碼解決方案

    這篇文章主要介紹了SpringBoot對(duì)Controller進(jìn)行單元測(cè)試的實(shí)現(xiàn)代碼 附亂碼解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • 詳解jenkins自動(dòng)部署springboot應(yīng)用的方法

    詳解jenkins自動(dòng)部署springboot應(yīng)用的方法

    這篇文章主要介紹了詳解jenkins自動(dòng)部署springboot應(yīng)用的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Java死鎖_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java死鎖_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    死鎖是兩個(gè)甚至多個(gè)線程被永久阻塞時(shí)的一種運(yùn)行局面,這種局面的生成伴隨著至少兩個(gè)線程和兩個(gè)或者多個(gè)資源。在這里我已寫好一個(gè)簡(jiǎn)單的程序,它將會(huì)引起死鎖方案然后我們就會(huì)明白如何分析它
    2017-06-06
  • Java調(diào)用shell腳本解決傳參和權(quán)限問(wèn)題的方法

    Java調(diào)用shell腳本解決傳參和權(quán)限問(wèn)題的方法

    今天小編就為大家分享一篇關(guān)于Java調(diào)用shell腳本解決傳參和權(quán)限問(wèn)題的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • java應(yīng)用開(kāi)發(fā)之Mybatis通過(guò)Mapper代理自定義接口的實(shí)現(xiàn)

    java應(yīng)用開(kāi)發(fā)之Mybatis通過(guò)Mapper代理自定義接口的實(shí)現(xiàn)

    這篇文章主要介紹了java應(yīng)用開(kāi)發(fā)之Mybatis通過(guò)Mapper代理自定義接口的實(shí)現(xiàn)方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • Java計(jì)算時(shí)間差和日期差五種常用示例

    Java計(jì)算時(shí)間差和日期差五種常用示例

    這篇文章主要給大家介紹了關(guān)于Java計(jì)算時(shí)間差和日期差五種常用示例的相關(guān)資料,最近工作中遇到需要計(jì)算時(shí)間差和日期差,搜索了幾種計(jì)算時(shí)間差和日期差的方法,這里總結(jié)一下,需要的朋友可以參考下
    2023-08-08
  • SpringBoot實(shí)現(xiàn)發(fā)送QQ郵件的示例代碼

    SpringBoot實(shí)現(xiàn)發(fā)送QQ郵件的示例代碼

    這篇文章主要介紹了SpringBoot如何實(shí)現(xiàn)發(fā)送QQ郵件功能,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09

最新評(píng)論