获取抽象类或者接口实现Bean
<h5>在Spring中获取抽象类或者接口具体实现Bean:</h5>
<h6>1:注入集合</h6>
<pre><code>/**
* 加载所有支付实现Bean Pay为抽象类 获取它所有子类
*/
@Autowired
private List<Pay> pays;</code></pre>
<h6>2:Spring的后置处理器</h6>
<pre><code>package com.example.mydemo.pay.channel.config;
import com.example.mydemo.pay.channel.Pay;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* 通过后置处理器拿到beanName与bean的关系
*/
@Service
public class PayBeanConfig implements BeanPostProcessor {
/**
* beanName --->bean
*/
private Map<String, Pay> payBeanMap = new HashMap();
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof Pay) {
payBeanMap.put(beanName, (Pay) bean);
}
return bean;
}
public Map<String, Pay> getPayBeanMap() {
return payBeanMap;
}
}
</code></pre>