spring List Map注入&抽象類注入
翻看之前專案程式碼,發現一段這樣的注入,將抽象類PaymentPlugin
所有的子類注入到集合中
@Inject
private List<PaymentPlugin> paymentPlugins = new ArrayList<>();
@Inject
private Map<String, PaymentPlugin> paymentPluginMap = new HashMap<>();
全域性搜尋之後並沒有發現關於這兩處的配置,這究竟是如何實現的?
後來在搜尋引擎和實踐的幫助下發現,spring可以將一個介面
//抽象父類
public abstract class PaymentPlugin {
}
//子類
@Component("weixinPublicPaymentPlugin")
public class WeixinPublicPaymentPlugin extends PaymentPlugin {
}
@Component("t")
public class T extends PaymentPlugin {
}
//介面
public interface PluginService {
}
//實現類
@Service
public class PluginServiceImpl implements PluginService {
}
測試程式碼如下
@Controller("testController")
public class Test {
@Resource(name="weixinPublicPaymentPlugin")
private PaymentPlugin paymentPlugin;
@Inject
private List<PaymentPlugin> paymentPlugins = new ArrayList<>();
@Inject
private Map<String, PaymentPlugin> paymentPluginMap = new HashMap<>();
@Inject
private List<PluginService> pluginServices = new ArrayList<>();
@Inject
private Map<String, PluginService> pluginServiceMap = new HashMap<>();
@RequestMapping("/test")
@ResponseBody
public void test() {
System.out.println("注入單例項:"+paymentPlugin);
System.out.println("抽象集合list:"+paymentPlugins);
System.out.println("抽象集合map:"+paymentPluginMap);
System.out.println("介面集合list:"+pluginServices);
System.out.println("介面集合map:"+pluginServiceMap);
}
}
列印結果如下
注入單例項:com[email protected]e7fdf9a3
抽象集合list:[[email protected], com[email protected]e7fdf9a3]
抽象集合map:{[email protected], weixinPublicPaymentPlugin=com[email protected]e7fdf9a3}
介面集合list:[[email protected]]
介面集合map:{[email protected]055ec87}
我在上網查詢相關資料的時候發現,有的部落格說spring無法注入抽象類,實測上述配置下,spring可以對抽象類進行注入,多個實現類,用name指定需要注入的bean即可。
相關推薦
spring List Map注入&抽象類注入
翻看之前專案程式碼,發現一段這樣的注入,將抽象類PaymentPlugin所有的子類注入到集合中 @Inject private List<PaymentPlugin> paymentPlugins = new ArrayList<>(); @Inject
關於使用spring框架的時候抽象類中注入其他實現類失敗的解決方法
/** * 抽象基類,為所有子類提供一個 流程操作演算法框架。 * @author */ @Transactional public abstract class RefreshBeverage { @Resource private TaskFollowMapper taskFo
spring list map set
cto tlist some mem try call java -a OS 1 list <!-- result in a setSomeList(java.util.List) call --> <property name="someList">
Set,List, Map各自實現類的比較
介面 實現類 實現方式 特點 Set HashSet 連結串列的陣列(雜湊表) 1、HashSet類按照雜湊演算法來存取集合中的物件,存取速度比較快。 2、存入Hash
Spring中的Assert抽象類
/* * Copyright 2002-2007 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); you may n
Spring 如何使用註解注入集合類list、set、map
首先通過示例來展示,如何在Spring中使用註解注入集合類(list、map、set等) 定義介面InjectService,繼承InitializingBean介面,便於列印Spring注入的例項物件 public interface InjectService extends Initi
spring抽象類中注入bean
在使用spring的時候,有時由於設計的需要,需要使用抽象類(比如模板方法模式),但在抽象類中實現方法是需要依賴其他的介面或類的方法,這時就需要對依賴的介面或類進行注入,需要注意以下內容: 在抽象類中需要注入(@autowire),在繼承了該抽象類的子類中同樣需要再次注入。比如當前專案中,使用者
spring 框架 list、set、map、Properties陣列注入
package com.zxk.test;import java.util.List;import java.util.Map;import java.util.Properties;import java.util.Set;import org.springframework.context.Applica
spring對抽象類中屬性的自動注入
在使用spring的時候,有時由於設計的需要,需要使用抽象類(比如模板方法模式),但在抽象類中實現方法是需要依賴其他的介面或類的方法,這時就需要對依賴的介面或類進行注入,需要注意以下內容: 在抽象類中需要注入(@autowire),在繼承了該抽象類的子類中同樣需要再次注入。
python 抽象類、抽象方法、介面、依賴注入、SOLIP
python 抽象類、抽象方法、介面、依賴注入、SOLIP 1、程式設計原則:SOLIP SOLIP設計原則 1、單一責任原則(SRP) 一個物件對只應該為一個元素負責 2、開放封閉原則(OCP) 對擴充套件開放,修改封閉 3、里
spring靜態類注入
建立XmppMessageUtil類 static Logger logger = LoggerFactory.getLogger(XmppMessageUtil.class); private static XmppMessageUtil xmppMessageUti
Spring 注入實現類報錯問題
在使用spring 時,假如在controller中注入了impl 實現類可能會出現報錯的情況。 為什麼是“可能”,① 假如沒用使用spring aop ,則不會報錯。 &nb
工具類中使用Spring注入的類
工具類中使用Spring注入的類並使用該類中的方法 @Component public class ExcelUtil { @Autowired private UserService userService; private static
在spring的過濾器中注入實體類(@autowire會失效可使用這個方法)
轉載:難得可貴的好文章 https://blog.csdn.net/chl191623691/article/details/78657638 首先,本文 絕對是好文!不止本文,作者的文章都是很經典的,希望大家給小編一個贊,關注一下! 今天在做使用者使用cookie自動登入
Spring boot中使用工具類 無需注入獲取.yml中的值
專案中經常需要將路徑URL等資訊單獨提出寫到配置檔案中,之前使用Spring時一般都是用 .properties檔案來存這些公共資訊,那麼如何在spring boot中優雅的使用.yml檔案存取呢、、首先定義存放公共資訊的 .yml 配置檔案定義為 application-c
Spring 父類注入的屬性 在子類中呼叫為null
在spring中注入屬性的目標是例項而不是類 子類從父類繼承的值是與例項無關的 所以子類的屬性並沒有被賦值 工作背景: 有一個BaseService 有3個Dao成員 DaoA DaoB DaoC 並且 spring 為這3個成員分別注入了值 這三個Dao是直接可以拿過來執
使用spring註解,注入sessionFactory類
簡述 目前使用spring hibernate作為專案的框架,並且使用註解方式進行物件裝載。在裝載Dao物件的時候常常需要注入sessionFactory物件,通常的做法是Dao繼承至HibernateDaoSuppor,t然後在Dao中新增setSuperSessionF
給sturts Action類注入spring bean的幾種已測試、可行的方法
只在struts中註冊一次(class屬性是全限定名),令action中屬性名與bean id/name一致,自動完成注入。無需設定set和get方法。 需注意,如果bean id/name 是首字母大寫,第二個字母小寫或者只有首字母時,外掛不會注入bean。因為外掛尋找的set方法是符合sun命名規範
關於在spring依賴注入的類中使用測試類解決辦法
剛接觸專案的實習生,積累經驗,歡迎交流 今天在專案中,遇到了一個問題:在一個spring管理的類中,使用junit測試類,總會報一個非法引數異常, 之後查詢了資料後終於找到了解決辦法,博主寫的十分詳細,資料:部落格連結 我就拾人牙慧,直接上解決辦法了: 先寫一個BaseSp
Spring為屬性注入某個類的常量或方法的返回值
spring提供了filed的值注入和method的返回值注入。 1、Field值的注入 filed值注入需要使用org.springframework.beans.factory.config.FieldRetrievingFactoryBean來獲取類的靜態變數。 例如