我有一个关于组件扫描的问题,以及在Spring版本3.0.5.RELEASE中为同一服务类的XML配置中使用额外的bean定义.
我创建了一个带有注释的"MyService"类
@Service( "myService" )
Run Code Online (Sandbox Code Playgroud)
并且对于同一个类,有一个bean定义,如下所示:
<bean id="myService" class="....MyService" />
Run Code Online (Sandbox Code Playgroud)
我放了一个
System.out.println( "MyService has been instantiated" );
Run Code Online (Sandbox Code Playgroud)
消息到MyService类的构造函数中.当我的应用程序启动时,该消息将仅在控制台上显示一次.Spring似乎很聪明,可以检测到只有一个具有id"myService"的类的实例.
但即使我将注释更改为
@Service( "myService2" )
Run Code Online (Sandbox Code Playgroud)
并将xml bean定义id保留为"myService",该类只会被实例化一次.
我的两个问题是:
虽然这是我目前想要的行为,是否可以将XML bean定义和组件扫描混合到一个类中,让它使用不同的Bean ID实例化两次?
有谁知道,Spring的"幕后"机制是什么?Spring如何决定何时只实例化一次类?(也许不允许在同一个类中混合组件扫描和XML bean定义?)
非常感谢你的帮助!
spring ×1