2017-02-16 3 views
1

私は、複数のパラメータと@Injectアノテーションを持つコンストラクタを持つSpring Beanクラスを持っています。
実際にオブジェクトを作成するためのコードを記述しなくても、Spring Java構成クラスを使用してクラスのBeanを作成する方法はありますか?フィールド上で@Beanを使用するような何か?Java設定とコンストラクタインジェクションの使用

@Bean(MyClassName.class) private MyInterfaceName myBean; 

それとも同じように、コンフィギュレーションクラスが抽象的でBeanメソッドを抽象することによって:

@Bean(MyClassName.class) abstract MyInterfaceName myBean(); 

それは非常に迷惑(と無意味な)ですが、たびにのみ新しいオブジェクトを作成し、全体の方法を記述するクラスの実装が1つしかなく、自動配線とコンストラクタインジェクションを使用したい場合は、

+0

私はちょうど建設注入を使いたいと思っています。私はフィールド自動配線が嫌いです。また、Beanを探すためにクラスパススキャンを使用したくない場合は、すべてのBeanが明示的に作成されているJava構成クラスを作成したいので、実際に各オブジェクトを作成するコードを記述したくありません。 – mike27

答えて

0

@Component注釈を使用できます。 Springのドキュメントによると、

@Componentは、注釈付きクラスが「コンポーネント」であることを示します。このようなクラスは、 注釈ベースの設定とクラスパススキャンを使用すると、自動検出の候補とみなされる です。

0

@Component注釈を使用してください。

注釈付きクラスが「コンポーネント」であることを示します。このようなクラスは、 注釈ベースの設定とクラスパススキャンを使用すると、自動検出の候補とみなされる です。他の クラスレベル注釈は、コンポーネントを特定するものとみなすことができ、通常は特別な種類のコンポーネントである: 。 @Repository アノテーションまたはAspectJの@Aspectアノテーション

Hereは一例です:

import org.springframework.stereotype.Component; 

@Component 
public class CustomerDAO 
{ 
    @Override 
    public String toString() { 
     return "Hello , This is CustomerDAO"; 
    } 
} 

DAOクラス:

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Component; 

@Component 
public class CustomerService 
{ 
    @Autowired 
    CustomerDAO customerDAO; 

    @Override 
    public String toString() { 
     return "CustomerService [customerDAO=" + customerDAO + "]"; 
    } 
} 

、ランナークラス:

import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class App 
{ 
    public static void main(String[] args) 
    { 
     ApplicationContext context = 
      new ClassPathXmlApplicationContext(new String[] {"Spring-AutoScan.xml"}); 

     CustomerService cust = (CustomerService)context.getBean("customerService"); 
     System.out.println(cust); 

    } 
} 

そして、あなたの出力:

CustomerService [customerDAO=Hello , This is CustomerDAO] 
+0

サービスとDAO層にそれぞれ '@Service'と' @Repository'アノテーションを使用できます。これらは '@ Component'と同じです。差分を知るにはhttp://stackoverflow.com/questions/6827752/whats-the-difference-between-component-repository-service-annotations-in#answer-6897038を参照してください。 –

関連する問題