问题
今天在同一父工程下,在一个子工程中调用另一个子工程的接口,运行一直提示无法注入另一个子工程的接口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);
}
}
版权声明:本文为weixin_43647393原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。