Spring依賴注入與第三方Bean管理基礎(chǔ)詳解
1. 注解開發(fā)依賴注入
1.1 使用@Autowired注解開啟自動裝配模式
@Service
public class BookServiceImpl implements BookService {
//@Autowired:注入引用類型,自動裝配模式,默認(rèn)按類型裝配
@Autowired
private BookDao bookDao;
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
說明:不管是使用配置文件還是配置類,都必須進(jìn)行對應(yīng)的Spring注解包掃描才可以使用。@Autowired默認(rèn)按照類型自動裝配,如果IOC容器中同類的Bean有多個,那么默認(rèn)按照變量名和Bean的名稱匹配,建議使用@Qualifier注解指定要裝配的bean名稱
注意:自動裝配基于反射設(shè)計(jì)創(chuàng)建對象并暴力反射對應(yīng)屬性為私有屬性初始化數(shù)據(jù),因此無需提供setter方法。
1.2 使用@Qualifier注解指定要裝配的bean名稱
目的:解決IOC容器中同類型Bean有多個裝配哪一個的問題
@Service
public class BookServiceImpl implements BookService {
//@Autowired:注入引用類型,自動裝配模式,默認(rèn)按類型裝配
@Autowired
//@Qualifier:自動裝配bean時按bean名稱裝配
@Qualifier("bookDao")
private BookDao bookDao;
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
注意:@Qualifier注解無法單獨(dú)使用,必須配合@Autowired注解使用
1.3 使用@Value實(shí)現(xià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"}) //{}可以省略不寫
public class SpringConfig {
}
注意:@PropertySource()中加載多文件請使用數(shù)組格式配置,不允許使用通配符*
2. 注解開發(fā)管理第三方Bean
2.1 單獨(dú)定義配置類
public class JdbcConfig {
//@Bean:表示當(dāng)前方法的返回值是一個bean對象,添加到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.注解開發(fā)為第三方Bean注入資源
3.1 簡單類型依賴注入
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會自動從IOC容器中找到BookDao對象賦值給參數(shù)bookDao變量,如果沒有就會報錯。
@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;
}
說明:引用類型注入只需要為bean定義方法設(shè)置形參即可,容器會根據(jù)類型自動裝配對象
4. 注解開發(fā)總結(jié)

到此這篇關(guān)于Spring依賴注入與第三方Bean管理基礎(chǔ)詳解的文章就介紹到這了,更多相關(guān)Spring依賴注入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot 自動裝配原理及 Starter 實(shí)現(xiàn)原理解析
SpringBoot通過@SpringBootApplication注解簡化了依賴引入和配置,該注解包括@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan三部分,感興趣的朋友跟隨小編一起看看吧2024-09-09
@DynamicUpdate //自動更新updatetime的問題
這篇文章主要介紹了@DynamicUpdate //自動更新updatetime的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
詳解五種方式讓你在java中讀取properties文件內(nèi)容不再是難題
這篇文章主要介紹了詳解五種方式讓你在java中讀取properties文件內(nèi)容不再是難題 ,非常具有實(shí)用價值,需要的朋友可以參考下。2016-12-12
Java輸入字母來判斷星期幾的實(shí)現(xiàn)代碼
這篇文章主要介紹了Java輸入字母來判斷星期幾的實(shí)現(xiàn)代碼,用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母需要的朋友可以參考下2017-02-02
Springboot 整合 Java DL4J 打造文本摘要生成系統(tǒng)
本文介紹了如何使用SpringBoot整合JavaDeeplearning4j構(gòu)建文本摘要生成系統(tǒng),該系統(tǒng)能夠自動從長篇文本中提取關(guān)鍵信息,生成簡潔的摘要,幫助用戶快速了解文本的主要內(nèi)容,技術(shù)實(shí)現(xiàn)包括使用LSTM神經(jīng)網(wǎng)絡(luò)進(jìn)行模型構(gòu)建和訓(xùn)練,并通過SpringBoot集成RESTfulAPI接口2024-11-11

