2011-12-15 9 views
0

私が書いていない古いプロジェクトを更新することが任されています。Spring xmlコンフィグレーションコントローラをAnnotationsに更新する

このプロジェクトは、Spring MVCベースであり、私がよく知らない古いSpring Controller設定を持っています。次のように

コントローラは豆の構成を有しているserviceNameのが

@Service(value=serviceName) 

を次のように@Serviceで注釈されたクラスを指し

<bean id="controllerName" class="the.project.controller.class"> 
<property name"serviceName"> 
    <ref bean="serviceName"> 
</property> 
<property name"successView"> 
    <value>viewName</value> 
</property> 
</bean> 

は、これは、XMLコンフィグレーションのための適切な交換ですか?

@Autowired 
@Qualifier("serviceName") 
ServiceNameImpl serviceName 

ここに感謝

編集serviceNameのクラスの組織とのインターフェース

public interface ServiceName { 
    // methods omitted 
} 

@Service(value="serviceName") 
public class ServiceNameImpl implments ServiceName { 
//methods omitted 
} 

で@Resourceアノテーションは(春3.0.7)私には利用できないとAutowireは、上記のように失敗します(タイプが以下に説明するように期待通りではないように見える)

org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching beans of type [the.project.ServiceNameImpl] found for dependency 

編集内容を考えれば、私は何を間違えているのですか(この情報を残してお詫び申し上げます)?

正しいです、私は例えばインタフェースおよびその実装

のメソッドにアクセスできるようにする必要があり、最後に

serviceName.doSomething(someVar); 

答えて

4

が、serviceNameためprivate修飾子を使用することを検討してください。もう一つの方法は、@Resourceを使用することです:

@Resource 
private ServiceNameClass serviceName; 

(注)この場合には、あなたが@Qualifier("serviceName")必要がないこと - @Autowiredがデフォルトでタイプを使用している間(フィールド)名で@Resource autowiresを。同じ/互換性のあるタイプの複数のBeanを使用している場合にのみ問題が発生します。

さらにコントローラクラスに@Controllerという注釈を付けて、controllerNameのBean定義をスキップすることもできます。

ところで、あなたはまた、次の構文を使用して、XMLコンフィギュレーションを少し短くすることができます。

<bean id="controllerName" class="the.project.controller.class"> 
    <property name"serviceName" ref="serviceName"/> 
    <property name"successView" value="viewName"/> 
</bean> 

は、(IntelliJのは、この変換を示唆し、あなたのためにそれを実行します)。

+0

トーマス私は重要な情報を残しているようです。あなたの答えを調べて更新することができますか?どうもありがとう 。ここでの目標は、可能な限り多くのxml構成を排除することです。これが最後です。 – stimpy

+0

@stimpy:フィールドは、 'ServiceName':' ServiceName serviceName'型です。ところで、Spring 3.1では、XMLを一切取り除くことができます! –

+0

質問をより詳細に更新しました。余分なラップのための謝罪。 – stimpy

関連する問題