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

Spring依賴注入與第三方Bean管理基礎(chǔ)詳解

 更新時(shí)間:2022年12月23日 10:59:29   作者:給我手牽你走~~  
依賴注入(Dependency Injection)和控制反轉(zhuǎn)(Inversion of Control)是同一個(gè)概念。具體含義是:當(dāng)某個(gè)角色(可能是一個(gè)Java實(shí)例,調(diào)用者)需要另一個(gè)角色(另一個(gè)Java實(shí)例,被調(diào)用者)的協(xié)助時(shí),在 傳統(tǒng)的程序設(shè)計(jì)過(guò)程中,通常由調(diào)用者來(lái)創(chuàng)建被調(diào)用者的實(shí)例

1. 注解開(kāi)發(fā)依賴注入

1.1 使用@Autowired注解開(kāi)啟自動(dòng)裝配模式

@Service
public class BookServiceImpl implements BookService {
    //@Autowired:注入引用類型,自動(dòng)裝配模式,默認(rèn)按類型裝配
    @Autowired
    private BookDao bookDao;
    public void save() {
        System.out.println("book service save ...");
        bookDao.save();
    }
}

說(shuō)明:不管是使用配置文件還是配置類,都必須進(jìn)行對(duì)應(yīng)的Spring注解包掃描才可以使用。@Autowired默認(rèn)按照類型自動(dòng)裝配,如果IOC容器中同類的Bean有多個(gè),那么默認(rèn)按照變量名和Bean的名稱匹配,建議使用@Qualifier注解指定要裝配的bean名稱

注意:自動(dòng)裝配基于反射設(shè)計(jì)創(chuàng)建對(duì)象并暴力反射對(duì)應(yīng)屬性為私有屬性初始化數(shù)據(jù),因此無(wú)需提供setter方法。

1.2 使用@Qualifier注解指定要裝配的bean名稱

目的:解決IOC容器中同類型Bean有多個(gè)裝配哪一個(gè)的問(wèn)題

@Service
public class BookServiceImpl implements BookService {
    //@Autowired:注入引用類型,自動(dòng)裝配模式,默認(rèn)按類型裝配
    @Autowired
    //@Qualifier:自動(dòng)裝配bean時(shí)按bean名稱裝配
    @Qualifier("bookDao")
    private BookDao bookDao;
    public void save() {
        System.out.println("book service save ...");
        bookDao.save();
    }
}

注意:@Qualifier注解無(wú)法單獨(dú)使用,必須配合@Autowired注解使用

1.3 使用@Value實(shí)現(xiàn)簡(jiǎn)單類型注入

package com.lin.dao.impl;
import com.lin.dao.BookDao;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Repository;
@Repository
public class BookDaoImpl implements BookDao {
    @Value("${name}")
    private String name;
    public void save() {
        System.out.println("Dao中的save"+" "+name);
    }
}

以上@Value注解中使用${name}從屬性文件中讀取name值,那么就需要在配置類或者配置文件中加載屬性文件。

@Configuration
@ComponentScan("com.itheima")
//@PropertySource加載properties配置文件
@PropertySource({"classpath:jdbc.properties"}) //{}可以省略不寫(xiě)
public class SpringConfig {
}

注意:@PropertySource()中加載多文件請(qǐng)使用數(shù)組格式配置,不允許使用通配符*

2. 注解開(kāi)發(fā)管理第三方Bean

2.1 單獨(dú)定義配置類

public class JdbcConfig {
    //@Bean:表示當(dāng)前方法的返回值是一個(gè)bean對(duì)象,添加到IOC容器中
    @Bean
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setUrl("jdbc:mysql://localhost:3306/spring_db");
        ds.setUsername("root");
        ds.setPassword("root");
        return ds;
    }
}

2.2 將獨(dú)立的配置類加入核心配置

@Import注解導(dǎo)入式

@Configuration
@ComponentScan("com.itheima")
//@Import:導(dǎo)入配置信息
@Import({JdbcConfig.class})
public class SpringConfig {
}

3.注解開(kāi)發(fā)為第三方Bean注入資源

3.1 簡(jiǎn)單類型依賴注入

3.1.1 新建jdbc.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/db1
jdbc.username=root
jdbc.password=1234

3.1.2 在配置類或者配置文件中加載屬性文件。

3.1.3 使用EL表達(dá)式讀取properties屬性文件中的內(nèi)容

package com.lin.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;
public class JdbcConfig {
    @Value("${jdbc.driver}")
    private String driverName;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String userName;
    @Value("jdbc.password")
    private String password;
    @Bean
    public DataSource getDataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverName);
        dataSource.setUrl(url);
        dataSource.setUsername(userName);
        dataSource.setPassword(password);
        return dataSource;
    }
}

3.2 引用類型依賴注入

//Spring會(huì)自動(dòng)從IOC容器中找到BookDao對(duì)象賦值給參數(shù)bookDao變量,如果沒(méi)有就會(huì)報(bào)錯(cuò)。
@Bean 
public DataSource dataSource(BookDao bookDao){
    System.out.println(bookDao);
    DruidDataSource ds = new DruidDataSource();
    ds.setDriverClassName(driver);
    ds.setUrl(url);
    ds.setUsername(userName);
    ds.setPassword(password);
    return ds;
}

說(shuō)明:引用類型注入只需要為bean定義方法設(shè)置形參即可,容器會(huì)根據(jù)類型自動(dòng)裝配對(duì)象

4. 注解開(kāi)發(fā)總結(jié)

到此這篇關(guān)于Spring依賴注入與第三方Bean管理基礎(chǔ)詳解的文章就介紹到這了,更多相關(guān)Spring依賴注入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • ThreadPoolExecutor線程池的使用方法

    ThreadPoolExecutor線程池的使用方法

    這篇文章主要為大家詳細(xì)介紹了ThreadPoolExecutor線程池的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Java Spring框架的概述

    Java Spring框架的概述

    這篇文章主要為大家介紹了Java Spring框架,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • Spring Boot 自動(dòng)裝配原理及 Starter 實(shí)現(xiàn)原理解析

    Spring Boot 自動(dòng)裝配原理及 Starter 實(shí)現(xiàn)原理解析

    SpringBoot通過(guò)@SpringBootApplication注解簡(jiǎn)化了依賴引入和配置,該注解包括@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan三部分,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • @DynamicUpdate //自動(dòng)更新updatetime的問(wèn)題

    @DynamicUpdate //自動(dòng)更新updatetime的問(wèn)題

    這篇文章主要介紹了@DynamicUpdate //自動(dòng)更新updatetime的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • JBoss5.x下配置Log4j方法介紹

    JBoss5.x下配置Log4j方法介紹

    這篇文章主要介紹了JBoss5.x下配置Log4j方法介紹,小編覺(jué)得挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • 詳解五種方式讓你在java中讀取properties文件內(nèi)容不再是難題

    詳解五種方式讓你在java中讀取properties文件內(nèi)容不再是難題

    這篇文章主要介紹了詳解五種方式讓你在java中讀取properties文件內(nèi)容不再是難題 ,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-12-12
  • Java輸入字母來(lái)判斷星期幾的實(shí)現(xiàn)代碼

    Java輸入字母來(lái)判斷星期幾的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java輸入字母來(lái)判斷星期幾的實(shí)現(xiàn)代碼,用情況語(yǔ)句比較好,如果第一個(gè)字母一樣,則判斷用情況語(yǔ)句或if語(yǔ)句判斷第二個(gè)字母需要的朋友可以參考下
    2017-02-02
  • Java中的ReentrantLock原理解析

    Java中的ReentrantLock原理解析

    這篇文章主要介紹了Java中的ReentrantLock原理解析,ReentrantLock是Java中的一個(gè)線程同步工具,它提供了比synchronized更靈活和強(qiáng)大的功能。它是一個(gè)可重入的互斥鎖,意味著同一個(gè)線程可以多次獲取該鎖,而不會(huì)發(fā)生死鎖,需要的朋友可以參考下
    2023-11-11
  • Springboot 整合 Java DL4J 打造文本摘要生成系統(tǒng)

    Springboot 整合 Java DL4J 打造文本摘要生成系統(tǒng)

    本文介紹了如何使用SpringBoot整合JavaDeeplearning4j構(gòu)建文本摘要生成系統(tǒng),該系統(tǒng)能夠自動(dòng)從長(zhǎng)篇文本中提取關(guān)鍵信息,生成簡(jiǎn)潔的摘要,幫助用戶快速了解文本的主要內(nèi)容,技術(shù)實(shí)現(xiàn)包括使用LSTM神經(jīng)網(wǎng)絡(luò)進(jìn)行模型構(gòu)建和訓(xùn)練,并通過(guò)SpringBoot集成RESTfulAPI接口
    2024-11-11
  • 基于java高并發(fā)處理方案

    基于java高并發(fā)處理方案

    這篇文章主要介紹了基于java高并發(fā)處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評(píng)論

应城市| 东阿县| 靖安县| 崇礼县| 杭州市| 临颍县| 武义县| 南康市| 宣城市| 郓城县| 阳泉市| 西充县| 都昌县| 绥滨县| 论坛| 景洪市| 九寨沟县| 汨罗市| 缙云县| 安仁县| 曲周县| 尼勒克县| 凤台县| 汶川县| 滕州市| 晋江市| 兴海县| 景德镇市| 玛多县| 内丘县| 澜沧| 横山县| 曲周县| 田东县| 彰武县| 平罗县| 怀安县| 朔州市| 永仁县| 慈利县| 富源县|