(四)dubbo spi

具體參考我的gitee:springboot-Dubbo-spi

com.dubbo.spi.demo.service.SPIService:
在這裏插入圖片描述

spiserviceimpl=com.dubbo.spi.demo.service.SPIServiceImpl
spiserviceimpl2=com.dubbo.spi.demo.service.SPIServiceImpl2

controller:

@RestController
@RequestMapping(value = "/SPI")
public class SPIController {

    @RequestMapping(value="/querySPI/{orgId}",method=RequestMethod.GET)
    public List<Orgization> querySPI(@PathVariable(value = "orgId") Integer orgId) {
        List<Orgization> list = new ArrayList<>(2);
        ExtensionLoader<SPIService> extensionLoader = ExtensionLoader.getExtensionLoader(SPIService.class);
        SPIService spiserviceimpl = extensionLoader.getExtension("spiserviceimpl");
        Orgization byId = spiserviceimpl.findById(orgId);

        SPIService spiserviceimpl2 = extensionLoader.getExtension("spiserviceimpl2");
        Orgization byId2 = spiserviceimpl2.findById(orgId);
        list.add(byId);
        list.add(byId2);
        return list;
    }
}

SPIService:

@SPI("dubbo")  //dubbo 即 METF-INF.dubbo 中的dubbo
public interface SPIService {

    Orgization findById(Integer orgId);
}

SPIServiceImpl :

@Service
public class SPIServiceImpl implements SPIService{

    @Autowired
    private SPIDao spiDao;

    private static SPIServiceImpl spiServiceimpl;

    @PostConstruct
    public void init() {
        spiServiceimpl = this;
        spiServiceimpl.spiDao = this.spiDao;
    }

    @Override
    public Orgization findById(Integer orgId) {
        Orgization one = spiServiceimpl.spiDao.findOne(orgId);
        System.out.println("SPIServiceImpl 的輸出爲:"+one);
        return one;
    }
}

SPIServiceImpl2:

@Service
public class SPIServiceImpl2 implements SPIService{

    @Autowired
    private SPIDao spiDao2;

    private static SPIServiceImpl2 spiServiceimpl2;

    @PostConstruct
    public void init() {
        spiServiceimpl2 = this;
        spiServiceimpl2.spiDao2 = this.spiDao2;
    }


    @Override
    public Orgization findById(Integer orgId) {
        Orgization one = spiServiceimpl2.spiDao2.findOne(orgId);
        System.out.println("SPIServiceImpl2 的輸出爲:"+one);
        return one;
    }
}

SPIDao :

public interface SPIDao extends CrudRepository<Orgization,Integer> {
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章