首页 > 其他分享 >ServiceLocatorFactoryBean获取Bean方法

ServiceLocatorFactoryBean获取Bean方法

时间:2023-08-15 11:37:01浏览次数:35  
标签:String TestBeanFactory getName BeanFactory ServiceLocatorFactoryBean 获取 Bean pub

对于不同输入需要调用不同实现类,可以考虑使用ServiceLocatorFactoryBean

定义一个interface代理接口(根据类型来判断选择哪一个实现)

public interface BeanFactory {
    //type 是具体Bean类型
    TestBeanFactory get(String type);
}

定义ServiceLocatorFactoryBean定位配置类

@Configuration
public class TestFactoryConfig {
    @Bean("Test")
    public ServiceLocatorFactoryBean dataWarehouseFactory() {
        ServiceLocatorFactoryBean dataWarehouseFactory = new ServiceLocatorFactoryBean();
        dataWarehouseFactory.setServiceLocatorInterface(BeanFactory.class);
        return dataWarehouseFactory;
    }

定义定义一个interface接口

public interface TestBeanFactory {
    String geName();
}

编写TestFactoryService的实现类,根据方法getBean获取具体的Bean方法

@Service("A")
public class TestBeanFactoryImplA implements TestBeanFactory {
    @Override
    public String getName() {
        return "调用A成功";
    }
}
@Service("B")
public class TestBeanFactoryImplB implements TestBeanFactory {
    @Override
    public String getName() {
        return "调用B成功";
    }
}

测试1:

@Resource
private BeanFactory beanFactory;	

@Test
    public void DemoTest() {
        TestBeanFactory testBeanFactory = beanFactory.get("B");
        System.out.println("输出结果:"+testBeanFactory.getName());
    }

输出:输出结果:调用B成功

测试2:

@Resource
private BeanFactory beanFactory;	

@Test
    public void DemoTest() {
        TestBeanFactory testBeanFactory = beanFactory.get("A");
        System.out.println("输出结果:"+testBeanFactory.getName());
    }

输出:输出结果:调用A成功

标签:String,TestBeanFactory,getName,BeanFactory,ServiceLocatorFactoryBean,获取,Bean,pub
From: https://blog.51cto.com/u_16226278/7086483

相关文章

  • iOS 根据utsname获取的Identifier获取设备名称
    在线jsonhttps://api.ipsw.me/v4/devices获取设备名称+(NSString*)getDeviceName{staticNSString*_deviceName;if(_deviceName){return_deviceName;}structutsnamesystemInfo;uname(&systemInfo);//获取设备标识Identifier......
  • 使用 OpenSSL 解密 DBeaver 保存的数据库连接信息获取数据库连接密码
    你是不是使用任何软件时都喜欢记住密码?是的,我也喜欢。但如果有一天你想把密码分享给其他人,而你又不记得密码是什么了,没错你可以去查看已保存的密码,但是当你使用的是DBeaver时,不好意思,没有查看已保存的密码功能,这个时候不就尴尬了嘛。那么现在你也许不再需要因此而烦恼了,因为......
  • 获取字段名
    1ALTERfunction[dbo].[获取字段名](@字段名varchar(max))2returnsvarchar(max)3as4begin5declare@colnamevarchar(max)6select@colname=coalesce(@colname+',','')+b.namefromsysobjectsajoinsyscolumnsbona.id=b.idwherea.id=obje......
  • C# 获取网页上指定的元素
    直接上代码//usingSystem;//usingSystem.Net.Http;//usingSystem.Threading.Tasks;//usingHtmlAgilityPack;//usingNewtonsoft.Json;//classProgram//{//staticasyncTaskMain(string[]args)//{//usingvarhttpClient=newHttpClient();......
  • 联通光猫获取超级管理员密码,联通宽带逻辑ID 获取
    首先使用普通账户登录然后访问这个链接http://192.168.1.1/backpresettings.conf保存backpresettings.conf 打开文件就可以看到cuadmin也就是超级管理员的密码了由于我不小心重置了光猫然后一直注册让输入逻辑ID找客服大半天电话没有用,突然想到我备份的配置文......
  • Geant4的PrimaryGenerator中获取世界大小
     PrimaryGeneratorAction.cc#include"G4LogicalVolumeStore.hh"……voidPrimaryGeneratorAction::GeneratePrimaries(G4Event*anEvent){G4LogicalVolume*worldLV=G4LogicalVolumeStore::GetInstance()->GetVolume("World");G4Box*worldB......
  • C# 获取网络API接口中的数据(1)
    控制台案例:usingSystem;usingSystem.Net.Http;usingSystem.Threading.Tasks;usingNewtonsoft.Json;usingNewtonsoft.Json.Linq;usingSystem.Data;usingSystem.Xml.Linq;usingSystem.Net;namespaceConsoleApp{classProgram{staticvoidM......
  • 引入feign注入报错 org.springframework.beans.factory.NoSuchBeanDefinitionExceptio
    引入feign注入报错org.springframework.beans.factory.NoSuchBeanDefinitionException解决[172.16.22.215]out:Causedby:org.springframework.beans.factory.NoSuchBeanDefinitionException:Noqualifyingbeanoftype'com.test.mydock.api.FeignRemoteTestService�......
  • 高德解析城市的分析,根据高德的经纬度获取城市cityCode
    高德解析城市的分析,根据高德的经纬度获取城市cityCodehttp://restapi.amap.com/v3/geocode/regeo?output=json&location=110.517039,18.817948&key=替换成自己的高德KEY&extensions=base1.高德返回城市(正常情况)江苏省南京市玄武区"city":"南京市","province":"江苏省",&qu......
  • 各个时区对应的时差表 及 python中时区获取方式(支持夏令时)
    1Africa/Abidjan+00:002Africa/Accra+00:003Africa/Addis_Ababa+03:004Africa/Algiers+01:005Africa/Asmara+03:006Africa/Bamako+00:007Africa/Bangui+01:008Africa/Banjul+00:009Africa/Bissau+00:0010Africa......