引用别人封装好的jar包,启动报错
Field sendInfoService in com.pagA.service.impl.channel.ChannelDocServiceImpl required a bean of type 'com.pagB.service.SendInfoService' that could not be found.The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
出现这个错误的原因首先需要明白,java程序启动会首先扫描和启动类同级的包路径下。也就是@SpringBootApplication 这个注解同级下的包。启动报错的原因就是启动类在com.pagA包路径下,引用的jar包里面封装的service实现类在com.pagB路径下,导致应用程序启动的时候找不到pagB路径,所以就报错了。
###此外,若要注入的bean或者service不添加@Service注解也会报上述错误###
解决方法:添加配置类到pagA包路径下,重定向扫描路径
/**
* 扫描配置类
*
* @author FM_南风
* @date 2024/2/22 15:32
*/
@Configuration
@ComponentScan({
"com.pagA.mapper",
"com.pagB.service",
})
@MapperScan({
"com.pagA.mapper",
"com.pagB.mapper",
})
public class ScanConfiguration {
private static final Logger logger = LoggerFactory.getLogger(ScanConfiguration.class);
public ScanConfiguration() {
logger.info("创建扫描配置类对象:ScanConfiguration");
}
}