在我的示例Spring启动应用程序中,我添加了自定义jar的依赖项。我的示例应用程序支持web和jpa。
我创建的jar包含一个Spring MVC控制器。以下是示例代码
@Controller
public class StartStopDefaultMessageListenerContainerController {
@Autowired(required=false)
private Map<String, DefaultMessageListenerContainer> messageListeners;
我没有在我的代码中的任何地方手动创建此控制器的bean实例。
问题 - 当我通过运行主类启动我的spring启动应用程序时,我在控制台中出现错误,同时自动装配DefaultMessageListenerContainer。
我的问题是,即使这个类StartStopDefaultMessageListenerContainerController只存在于类路径中,也不应该创建它的bean并且不应该发生自动装配。但春季启动是自动扫描类,然后它尝试自动连接字段。
这是春天的正常行为吗?无论如何我可以避免这种情况吗?
答案 0 :(得分:0)
如果StartStopDefaultMessageListenerContainerController
类是spring容器的component scanning
的一部分,Yes spring会尝试实例化并解析所有依赖项。
此处您的问题是 @Autowired 收集。春天docs说,
本身定义为集合或地图类型的Bean无法通过@Autowired注入,因为类型匹配不适用于它们。将@Resource用于此类bean,以唯一名称引用特定集合或映射bean。