2011-12-07 11 views
4

私はstruts2.2とspring 3.1を持つappを持っています。私はspring autowireを無効にしたいと思います。 私はちょっとグーグルで、<beans>タブdefault-autowire="no"に置かなければならないが、これはうまくいかないとわかった。spring autowireを無効にする

次に、<bean>タグごとにこれを宣言できると確信しています:<bean autowire="no">しかし、これはどちらかと思われません。

私は春のデバッグロガーを有効にすると、私はこのようなメッセージAOFたくさん見ることができます:

INFO:DEBUG [HTTPスレッドプール-8080(3)](ConstructorResolver.java:739) - オートワイヤリングをタイプ別の名前のBeanへのコンストラクタ経由でBean名 'com.common.actions.PopupAction' から 'intermedService'

とapplicationConfig.xml内の対応するエントリは次のとおりです。

<beans default-autowire="no" 
     xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:p="http://www.springframework.org/schema/p" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 

<bean id="PopupAction" scope="prototype" class="com.common.actions.PopupAction" autowire="no"> 
     <constructor-arg type="com.common.services.abs.iIntermedService" ref="intermedService"/> 
     <constructor-arg type="com.common.services.abs.iLocationService" ref="locationService"/> 
     <constructor-arg type="com.common.services.abs.iUserService" ref="userService"/> 
     <constructor-arg type="com.common.services.abs.iPhoneService" ref="phoneService"/> 
    </bean> 

私はここで手作業で依存関係を定義し、私がauto-wire="no"を定義している限り、なぜこの動作をautowireしようとしていますか?

このメッセージは、コンストラクタ経由で配線が行われたことを示しています(私が望むように)、「タイプによる自動配線」は、4つのパラメータからintermedServiceを、または、他の何か)?

答えて

5

Struts 2 Springプラグインは、デフォルトでautowiringを "name"に設定します。現在のところ、プラグインが値として "none"を許可しているとは思っていませんが、 "auto"を使ってみることもできます。

これは前に引き上げられました。私は本当の決意を思い出さない。私は次のリリースで重要なクリーンアップを行っている場所で対処できるかどうかを確認するためにもう一度それを取り上げました。

編集 の定数は、デフォルトでfalseです。 trueに設定してみてください。私はブール値の意味を思い出しませんし、効果がある場合はそれを今見ています。

+0

こんにちはデイブ、私は何をしているかにかかわらず、私はいつもオートワイヤー:)です。私はこれを現時点のままにしておきます。たぶん、次のバージョンのstruts-springプラグインでは、この動作を無効にすることができます –

0

default-autowire = "no"はデフォルトで有効になっていると思います。つまり、default-autowireを指定しない場合、default-autowire = "no"を意味します。このBeanをautowireにしたくない場合は、autowire-candidate = "false"を設定してみてくださいhttp://static.springsource.org/spring/docs/2.5.x/reference/beans.html

+0

試してみましたが、動作しませんでした。 –

1

これを回避する方法は、フィールド/コンストラクタの引数とBeanの名前を別々に指定することですそのため、春はそれらにマッチできません。

関連する問題