栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring boot 当@Primary遇到循环依赖

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring boot 当@Primary遇到循环依赖

今天debug代码时,遇到一个坑

public interface LoopService {

	void testLoop();
	
	void testInnerLoop();
}

@Service
public class DefaultLoopService implements LoopService {
	private static final Logger log = LoggerFactory.getLogger(DefaultLoopService.class);

	@Override
	public void testLoop() {
		log.info("DefaultLoopService");
	}

	@Override
	public void testInnerLoop() {
		log.info("DefaultLoopService--testInnerLoop");
	}

}

@Service
@Primary
public class UsingLoopService implements LoopService {
	private static final Logger log = LoggerFactory.getLogger(UsingLoopService.class);
	
	@Autowired
	private LoopService loopService;
	
	@Override
	public void testLoop() {
		log.info("UsingLoopService");
		loopService.testInnerLoop();
	}

	@Override
	public void testInnerLoop() {
		log.info("UsingLoopService--testInnerLoop");
	}
}

@RestController
public class LoopController {
	
	@Autowired
	private LoopService loopService;

	@GetMapping("/testLoop")
	public void testLoop() {
		loopService.testLoop();
	}
}

当我请求http://localhost:8080/testLoop时,
期望打印
UsingLoopService : UsingLoopService
UsingLoopService : UsingLoopService–testInnerLoop

但实际却打印
UsingLoopService : UsingLoopService
UsingLoopService : DefaultLoopService–testInnerLoop

我的解决方案

给UsingLoopService命名

@Service("usingLoopService")
@Primary
public class UsingLoopService implements LoopService {
	private static final Logger log = LoggerFactory.getLogger(UsingLoopService.class);
	
	@Autowired
	@Qualifier("usingLoopService")
	private LoopService loopService;
	
	@Override
	public void testLoop() {
		log.info("UsingLoopService");
		loopService.testInnerLoop();
	}

	@Override
	public void testInnerLoop() {
		log.info("UsingLoopService--testInnerLoop");
	}
}

这时打印符合预期
UsingLoopService : UsingLoopService
UsingLoopService : UsingLoopService–testInnerLoop

请教

哪位大神有更好的解决方案,不防写在下面评论区 ↓ downarrow ↓

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459223.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号