最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot依賴注入的三種方式

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

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 的構造函數(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進行其他操作
    }
}

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

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

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

以下是一個簡單的示例:

  • 創(chuàng)建一個配置類,并使用@Configuration注解標記,定義兩個 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ū)ο?,更加靈活,更加易于維護。

3.使用注解來進行依賴注入

可以使用注解來進行依賴注入,常用的注解有@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());
    }
}

運行啟動類,可以看到控制臺輸出:

小明

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

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

相關文章

  • JAVA正則表達式校驗qq號碼的方法

    JAVA正則表達式校驗qq號碼的方法

    Java作為一種開發(fā)語言,有許多值得推薦的地方,但是它一直以來沒有自帶對正則表達式的支持。下面小編給大家?guī)砹薐AVA正則表達式校驗qq號碼的方法,需要的朋友參考下吧
    2018-04-04
  • Springboot初始化啟動報錯Error?creating?bean?with?name?'dataSource'?defined?in?class?path?resource

    Springboot初始化啟動報錯Error?creating?bean?with?name?'da

    這篇文章主要為大家介紹了Springboot初始化啟動報Error?creating?bean?with?name?'dataSource'?defined?in?class?path?resource解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 關于mybatis調(diào)用存儲過程獲取返回值問題

    關于mybatis調(diào)用存儲過程獲取返回值問題

    這篇文章主要介紹了mybatis調(diào)用存儲過程獲取返回值問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • 如何將maven項目劃分為多個模塊

    如何將maven項目劃分為多個模塊

    這篇文章主要介紹了如何將maven項目劃分為多個模塊,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • SpringBoot @SpringBootTest加速單元測試的小訣竅

    SpringBoot @SpringBootTest加速單元測試的小訣竅

    這篇文章主要介紹了SpringBoot @SpringBootTest加速單元測試的小訣竅,具有很好的參考價值,對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java多線程定時器Timer原理及實現(xiàn)

    Java多線程定時器Timer原理及實現(xiàn)

    這篇文章主要介紹了Java多線程定時器Timer原理及實現(xiàn),涉及Timer的schedule的使用,定時器Timer的schedule等相關內(nèi)容以及代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Java?MyBatis實戰(zhàn)之QueryWrapper中and和or拼接技巧大全

    Java?MyBatis實戰(zhàn)之QueryWrapper中and和or拼接技巧大全

    在Java中QueryWrapper是MyBatis-Plus框架中的一個查詢構造器,它提供了豐富的查詢方法,其中包括and和or方法,可以用于構建復雜的查詢條件,這篇文章主要給大家介紹了關于Java?MyBatis實戰(zhàn)之QueryWrapper中and和or拼接技巧的相關資料,需要的朋友可以參考下
    2024-07-07
  • Maven項目如何打包成Docker鏡像?三種常用插件詳解

    Maven項目如何打包成Docker鏡像?三種常用插件詳解

    想知道如何將Maven項目高效打包成Docker鏡像嗎?本文詳細對比了docker-maven-plugin、jib-maven-plugin和spring-boot-maven-plugin三種方式,手把手教你從配置pom.xml到運行容器,幫你根據(jù)需求輕松選擇最適合的Maven打包Docker鏡像方案
    2026-07-07
  • 基于spring mvc請求controller訪問方式

    基于spring mvc請求controller訪問方式

    這篇文章主要介紹了spring mvc請求controller訪問方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringBoot中的ImportSelector類動態(tài)加載bean詳解

    SpringBoot中的ImportSelector類動態(tài)加載bean詳解

    這篇文章主要介紹了SpringBoot中的ImportSelector類動態(tài)加載bean詳解,ImportSelector接口是spring中導入外部配置的核心接口,根據(jù)給定的條件(通常是一個或多個注釋屬性)判定要導入那個配置類,在spring自動化配置和@EnableXXX中都有它的存在,需要的朋友可以參考下
    2024-01-01

最新評論

遂溪县| 胶州市| 靖江市| 清镇市| 迭部县| 海伦市| 陆川县| 剑川县| 岚皋县| 卫辉市| 吉木萨尔县| 东丽区| 赫章县| 广灵县| 珠海市| 林口县| 维西| 明星| 砀山县| 廉江市| 长岛县| 开原市| 竹北市| 静乐县| 肃南| 寿光市| 乌兰察布市| 福泉市| 淮阳县| 克什克腾旗| 彰武县| 阿坝县| 黎城县| 富阳市| 新晃| 镇赉县| 淮南市| 达拉特旗| 许昌县| 桐城市| 拉萨市|