我对 Spring bean-scanning 有点困惑。
AFAIK我需要把<context:component-scan base-package="some.package" />
Spring 将从给定包的根目录中搜索 bean。
但是现在在我的应用程序中,如果我从 .xml 配置文件中删除这一行,然后启动 Tomcat,我会得到
INFO : org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@4dd1b: defining beans
然后我得到一长串 bean,其中一些来自 Spring,但也有一些我希望看到的<context:component-scan base-package="some.package" />
添加到配置文件中。两个日志之间唯一不同的是控制器方法到地址的映射。如果此行不存在,则不会映射方法。
为什么 Spring 会检测这些 bean?是什么让 Spring 扫描我的包以查找带注释的类?
如果相关,我正在使用 Spring 3
编辑:如果我不删除<context:component-scan base-package="some.package" />
,我将获得两次预实例化单例的信息。所以看起来这些豆子被扫描了两次。
编辑:似乎在 ContextListener 加载的文件之一中,我进行了组件扫描。这就是为什么我把这些豆子列出了两次。