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

SpringBoot依賴注入的三種方式

 更新時間:2023年04月18日 09:29:16   作者:左林右李02  
本文將通過代碼示例詳細(xì)介紹SpringBoot依賴注入的三種方式,對學(xué)習(xí)依賴注入有一定的參考價值,需要的朋友可以參考一下

SpringBoot依賴注入的三種方式

1.使用 XML 配置依賴注入

在 Spring Boot 中,使用 XML 配置依賴注入(DI)時,需要使用<bean>元素來定義 bean,并使用<property>元素來為 bean 的屬性注入值或依賴對象。

以下是一個簡單的示例:

  • 在src/main/resources目錄下創(chuàng)建applicationContext.xml文件。
  • 在該文件中定義一個 testBean bean,并注入一個 String 類型的屬性name和一個 UserService 類型的依賴對象。
<?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="testBean" class="com.example.demo.TestBean">
       <property name="name" value="小明"/>
       <property name="userService" ref="userService"/>
   </bean>

   <bean id="userService" class="com.example.demo.UserService"/>

</beans>
  • 在 TestBean 類中聲明一個 name 屬性和一個 UserService 的依賴:
public class TestBean {
    private String name;
    private UserService userService;
    //setter和getter方法省略
}
  • 在啟動類中調(diào)用 ApplicationContext 的構(gòu)造函數(shù)并傳入 applicationContext.xml 文件的路徑,然后通過 getBean 方法獲取 TestBean 實例,并訪問它的屬性和方法:
public class DemoApplication {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        TestBean testBean = (TestBean)context.getBean("testBean");
        String name = testBean.getName();
        UserService userService = testBean.getUserService();
        //使用testBean和userService進(jìn)行其他操作
    }
}

這樣就完成了 Spring Boot 中使用 XML 配置依賴注入的過程。需要注意的是,在 Spring Boot 中,官方推薦使用 JavaConfig(基于 Java 類的配置方式)或注解(Annotation)來進(jìn)行依賴注入,因為它們更加方便和易于維護(hù)。

2.使用 Java 配置類實現(xiàn)依賴注入

使用 Java Config 實現(xiàn)依賴注入可以通過@Configuration和@Bean注解來實現(xiàn)。

以下是一個簡單的示例:

  • 創(chuàng)建一個配置類,并使用@Configuration注解標(biāo)記,定義兩個 Bean:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {
    @Bean
    public TestBean testBean() {
        return new TestBean("小明");
    }

    @Bean
    public UserService userService() {
        return new UserServiceImpl();
    }
}
  • 定義 TestBean 類,并在該類中聲明一個 name 屬性:
public class TestBean {
    private String name;

    public TestBean(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
  • 定義 UserService 接口和它的實現(xiàn)類 UserServiceImpl:
public interface UserService {
    void addUser();
}

public class UserServiceImpl implements UserService {
    @Override
    public void addUser() {
        System.out.println("Add user success");
    }
}
  • 在啟動類中使用 AnnotationConfigApplicationContext 獲取配置類對象,然后使用 getBean() 方法獲取 TestBean 和 UserService 實例:
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class DemoApplication {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
        TestBean testBean = context.getBean(TestBean.class);
        String name = testBean.getName();
        UserService userService = context.getBean(UserService.class);
        userService.addUser();
    }
}

這樣就完成了使用 JavaConfig 實現(xiàn)依賴注入的過程。需要注意的是,JavaConfig 等價于 XML 配置文件,但是 JavaConfig 更加的面向?qū)ο?,更加靈活,更加易于維護(hù)。

3.使用注解來進(jìn)行依賴注入

可以使用注解來進(jìn)行依賴注入,常用的注解有@Autowired和@Qualifier。

以下是一個簡單的示例:

  • 定義一個 Service 類,使用@Autowired注解注入TestBean:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class Service {
    @Autowired
    private TestBean testBean;

    public String getName() {
        return testBean.getName();
    }
}
  • 定義 TestBean 類,測試注入是否成功:
import org.springframework.stereotype.Component;

@Component
public class TestBean {
    private String name = "小明";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
  • 在啟動類中使用 AnnotationConfigApplicationContext 獲取配置類對象,然后使用 getBean() 方法獲取 Service 實例:
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class DemoApplication {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
        Service service = context.getBean(Service.class);
        System.out.println(service.getName());
    }
}

運(yùn)行啟動類,可以看到控制臺輸出:

小明

這樣就完成了使用注解進(jìn)行依賴注入的過程。需要注意的是,使用注解可以使代碼更加簡潔、易于閱讀和維護(hù),但是需要注意注解的使用和作用范圍。

以上就是SpringBoot依賴注入的三種方式的詳細(xì)內(nèi)容,更多關(guān)于Java SpringBoot依賴注入的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java中Thread.join()的使用方法

    Java中Thread.join()的使用方法

    這篇文章主要介紹了Java中Thread.join()的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Struts2實現(xiàn)上傳單個文件功能

    Struts2實現(xiàn)上傳單個文件功能

    這篇文章主要為大家詳細(xì)介紹了Struts2實現(xiàn)上傳單個文件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java如何判斷線程是否結(jié)束的三種方法

    Java如何判斷線程是否結(jié)束的三種方法

    本文主要介紹了Java如何判斷線程是否結(jié)束的三種方法,主要介紹了三種方法,文中根據(jù)實例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • java中的正則操作方法總結(jié)

    java中的正則操作方法總結(jié)

    關(guān)于正則表達(dá)式的使用,更多的是自己的經(jīng)驗,有興趣可以參閱相關(guān)書籍。這里主要寫一下java中的正則操作方法
    2013-10-10
  • 用Java打印九九除法表代碼分析

    用Java打印九九除法表代碼分析

    這篇文章主要介紹了如何用Java語言打印九九除法表,包括其使用的源代碼,需要的朋友可以參考下。
    2017-08-08
  • java設(shè)計模式之適配器模式(Adapter)

    java設(shè)計模式之適配器模式(Adapter)

    這篇文章主要介紹了java設(shè)計模式之適配器模式Adapter的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 十個最常見的Java字符串問題(翻譯)

    十個最常見的Java字符串問題(翻譯)

    這篇文章主要介紹了十個最常見的Java字符串問題(翻譯),需要的朋友可以參考下
    2015-03-03
  • Jmerte分布式壓測及分布式壓測配置教程

    Jmerte分布式壓測及分布式壓測配置教程

    這篇文章主要介紹了Jmerte分布式壓測及分布式壓測配置,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • Java的MyBatis框架中對數(shù)據(jù)庫進(jìn)行動態(tài)SQL查詢的教程

    Java的MyBatis框架中對數(shù)據(jù)庫進(jìn)行動態(tài)SQL查詢的教程

    這篇文章主要介紹了Java的MyBatis框架中對數(shù)據(jù)庫進(jìn)行動態(tài)SQL查詢的教程,講解了MyBatis中一些控制查詢流程的常用語句,需要的朋友可以參考下
    2016-04-04
  • Java面試必備之JMM高并發(fā)編程詳解

    Java面試必備之JMM高并發(fā)編程詳解

    高并發(fā)(High?Cuncurrency)是互聯(lián)網(wǎng)分布式系統(tǒng)架構(gòu)設(shè)計中必須考慮的因素之一,它通常是指,通過設(shè)計保證系統(tǒng)能夠同時并發(fā)處理很多請求
    2022-07-07

最新評論