有人可以解释一下 ** 在 spring 配置的上下文中代表什么吗?
<context:component-scan base-package="a.b.**" />
以及这与
<context:component-scan base-package="a.b" />
我找不到任何关于在组件扫描元素的基本包属性中使用通配符/ant 样式路径的信息。
您能否还指出任何可以解释在组件扫描属性中使用通配符的文档/源代码?我的 google-fu 没用
编辑: 我根据接受的答案做了更多的实验,现在知道 base-package 属性的值是如何“转换”为资源字符串的,这一切都说得通了。
所以,我创建了两个 Spring 托管组件
a.b.SpringBean2
a.b.c.d.SpringBean1
SpringBean1 使用 @Autowired 注入了 SpringBean2
所以不仅如此:
<context:component-scan base-package="a.b"/>
还有这个:
<context:component-scan base-package="a.b.**"/>
从某种意义上说,可以正确解析 SpringBean2 以将其注入 SpringBean1 中,但这些也可以正常工作:
<context:component-scan base-package="a.b.**.**.**"/> <!-- as many .** as you want-->
<context:component-scan base-package="a.b**"/>
<context:component-scan base-package="a.b*"/>
但是,由于未解析的 SpringBean2 类型,这将失败并出现 NoSuchBeanDefinitionException:
<context:component-scan base-package="a.b.*"/>