在SpringBoot中,一个工程中如何调用另一个工程的接口

问题

今天在同一父工程下,在一个子工程中调用另一个子工程的接口,运行一直提示无法注入另一个子工程的接口bean
即使引入了该工程的依赖,依然无法解决

package cn.khue.banner.service.service.impl;

import cn.khue.banner.service.service.BannerService;
import cn.khue.commons.dto.LivegoodsDTO;
import cn.khue.commons.entity.Banner;
import cn.khue.dao.banner.BannerDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;

@Service
public class BannerServiceImpl implements BannerService {
     
	//注入另一个子工程的接口
    @Autowired
    private BannerDao bannerDao;

    @Override
    public LivegoodsDTO getBanner() {
     
        List<Banner> banners = bannerDao.findAll();
        LivegoodsDTO dto=new LivegoodsDTO();
        dto.setStatus(200);
        List<String> list=new ArrayList<>();
        for (Banner banner : banners) {
     
            list.add(banner.getUrl());
        }
        dto.setResults(list);
        return dto;
    }
}

解决

首先,在另一个子工程需要被调用的接口上使用@Compent注解

package cn.khue.dao.banner;

import cn.khue.commons.entity.Banner;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import java.util.List;

@Component
public interface BannerDao {
     
    //新增
    Banner save(Banner banner);
    //查询
    List<Banner> findAll();
    //删除
    Long remove(Query query);
}

然后,在本工程的SpringBoot的启动类上使用@CompoentScan注解(basePackages中既要包含本工程的目录,也要包含另一个工程的接口的目录,因为@SpringBootApplication已经包含了@ComponentScan,所以再写一遍会覆盖@SpringBootApplication的扫描路径,如果不扫描本工程的目录会报错)

package cn.khue.banner.service;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan(basePackages = {
     "cn.khue.banner.service","cn.khue.dao.banner"})
public class BannerServiceApp {
     
    public static void main(String[] args) {
     
        SpringApplication.run(BannerServiceApp.class,args);
    }
}

你可能感兴趣的:(SpringBoot)