2016-06-18 10 views
0

--Appconfig.javaは@componentScan(春JavaConfigの@annotaion)

@Configuration 
public class AppConfig {  

    @Bean(name="helloBean") 
    public HelloWorld helloWorld() { 
    return new HelloWorldImpl(); 
    } 
} 

--interface.java

public interface HelloWorld { 
    void printHelloWorld(String msg); 
} 

--ipml.java

public class HelloWorldImpl implements HelloWorld { 
public void printHelloWorld(String msg) { 
    System.out.println("Hello! : " + msg); 
    -- 
} 
せずに仕事をすることができ@Configuration

--App.java

public class App { 

public static void main(String[] args) { 

    AnnotationConfigApplicationContext context = new 
    new AnnotationConfigApplicationContext(AppConfig.class); 

HelloWorld obj = (HelloWorld) context.getBean(HelloWorldImpl.class); 

obj.printHelloWorld("Spring3 Java Config"); 
    } 
} 

私のプログラムは動作しますが、なぜ私はAppconfig.javaに@componentScanを追加する必要はありません。

@Configuration@Beanのようですが、@componentScanを使用している春から見つけることができます。

私は右の午前 、あなたが@Annotationを使用したい場合は、あなたが@componentScan使用したり

context:component-scan(xml)しなければならないと思いましたか?

答えて

1

@ComponentScanは、@Componentですべてのコンポーネントを春に自動スキャンできます。 Springは、コンポーネントを見つける場所を示すbase-package属性を使用します。

@Configurationは、@Componentというメタ注釈付きで、クラスパススキャンに適格であることを示します。あなたは

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); 

@Beanを使用する場合

@Configurationは(のAppConfigクラス)春はこの注釈に遭遇したときに、すべてのこれらのBeanが明示的に作成されるよう@ComponentScanを必要としません登録されています。

+0

私はそれを得ました、ありがとうございました。 –

関連する問題