8

伸びる春豆がありますHibernateDaoSupport。この Bean をコントローラーに注入したいのですが、インターフェイスを実装したくありません。コードの残りの部分から具象クラスを参照したいだけです(おそらくAopProxyを使用しないでください)。これを行う方法はありますか?

<bean id="mySampleService" class="com.sample.MySampleService">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

@Autowired
private MySampleService mySampleService;

... getters and setters ....

インターフェイスを使用するのが良い考えであり、それが IoC の要点であることはわかっていますが、インターフェイスの使用を提案しないでください。

4

3 に答える 3

12

(あなたの場合はトランザクションプロキシによって)プロキシされるクラスが(あなたの場合はによって実装された)任意のインターフェースをInitializingBean実装HibernateDaoSupportする場合、SpringはデフォルトでJDK動的プロキシに基づくプロキシ戦略を使用します。

したがって、 type のプロキシを作成しますが、これはInitializingBean明らかに type のフィールドに注入できませんMySampleService

インターフェイスを使用したくない場合は、で宣言することにより、トランザクションの側面で使用される戦略をオーバーライドでき<tx:annotation-driven>ますproxy-target-class = "true"

以下も参照してください。

于 2012-07-17T18:41:22.593 に答える
0

以下を確認してください。クラスパスに CGLIB があることを確認します。

http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch08s06.html

于 2012-07-17T18:37:02.957 に答える
0

xml にマップされたコントローラーを含むすべてを Bean として記述できるため、インターフェイスを記述する必要はありません。それ以外の場合は、アノテーションを使用して、それらをプロキシするインターフェイスを構築する必要があります。

于 2012-07-17T23:48:16.370 に答える