先日、コードベースで次の非正統的な構成を見つけて、不思議に思いました。インターフェイス名を Bean の名前としても使用する場合、予想される Spring Context の動作は何ですか? コントローラーで @Autowiring を使用していた場合、違いはありますか? 次のスニペットは、この設定を示しています。
interface MyAppService {...}
class InfrastructureService implements MyAppService {...}
class AdministrationService implements MyAppService {...}
class InfrastructureController {
// some code
public void setMyAppService(MyAppService svc){...}
}
<bean id="myAppService" class="InfrastructureService"/>
<bean id="administrationService" class="AdministrationService"/>
<bean id="infrastructureController" class="InfrastructureController">
<property name="myAppService" ref="myAppService"/>
</bean>
または、コントローラーのみが次のように定義されている場合、予想される動作はどうなるでしょうか。
class InfrastructureController {
@Autowired
public void setMyAppService(MyAppService svc){...}
}