我的businessAplicationContext.xml中有几个bean,一切正常,直到我添加了一个名为:
的新bean< bean id =" TcmLogManager"类=" ar.com.southend.tim.backend.util.logging.TcmLogManager" />
这个TcmLogManager只是实例化一个java.util.logging.StreamHandler,这样就可以存储一些日志条目。
问题是Spring实例化了这个bean 2次...虽然只有1个定义(如果我用.xml复制具有不同id的行,它会创建4个对象......依此类推...)
我还将范围定义为" singleton"但它没有用。
有什么想法吗?
答案 0 :(得分:2)
检查上下文文件中的<context:component-scan>
或其他扫描标记。这些强制Spring扫描源文件以获取组件类。如果您需要多次扫描,则应使用exclude / include过滤器修剪扫描。您可以使用嵌套的xml节点定义过滤器。
正如@adarshr指出的那样,第二个构造函数调用可以是一个代理bean,用于链接AOP方面。
答案 1 :(得分:0)
您描述问题的方式最可能的原因是,在创建ApplicationContexts时,该bean定义所在的上下文文件使用了两次 - 可能在同一个文件中使用两次,不知何故,或者两个不同的文件。当Spring启动时,它会在INFO级别记录特定BeanFactory中存在的所有bean。您可以检查该列表以确切了解哪些bean居住在哪里。在日志中搜索短语“定义bean”以找到它。