2017-09-29 82 views
0

Hy guys!什麼是Spring中的JavaConfig?

我只是嘗試TU明白其中的含義和註釋@Bean的用法,我遇到所謂JavaConfingin this文件(2.2.1章節)這個詞。上下文是如下:「要聲明一個bean,只需註釋與@Bean註釋的方法時JavaConfig遇到這樣的方法,將執行該方法,並註冊(......)」

我不明白是什麼JavaConfig是Spring ... 它究竟有什麼作用? 當它運行? 爲什麼運行?

我看到this documentation爲好,但並沒有使我更接近理解....

感謝您的幫助!

+0

春天核心參考:https://docs.spring.io/spring/docs/current/spring-framework-reference/ – Ivan

回答

5

它引用基於註釋的配置,而不是基於舊的原始XML的配置。

實際的JavaConfig組件是通過類文件和註釋來構建配置(而不是通過XML文件來構建配置)的組件。

+0

好,很明顯,謝謝! – HowToTellForAChild

2

使用@Configuration註解類表明該類可以被Spring IoC容器用作bean定義的源。 @Bean註解(你問到的)告訴Spring,用@Bean註解的方法將返回一個應該在Spring應用程序上下文中註冊爲bean的對象。最簡單的可能@Configuration類將是如下 -

package com.test; 
import org.springframework.context.annotation.*; 

@Configuration 
public class HelloWorldConfig { 
    @Bean 
    public HelloWorld helloWorld(){ 
     return new HelloWorld(); 
    } 
} 

將上面的代碼等同於以下XML配置 -

<beans> 
    <bean id = "helloWorld" class = "com.test.HelloWorld" /> 
</beans> 

這裏,方法的名稱標註有@Bean工作豆ID並創建並返回實際的bean。您的配置類可以擁有多個@Bean的聲明。一旦你的配置類的定義,您可以加載併爲他們提供Spring容器使用AnnotationConfigApplicationContext如下 -

public static void main(String[] args) { 
    ApplicationContext ctx = new AnnotationConfigApplicationContext(HelloWorldConfig.class); 

    HelloWorld helloWorld = ctx.getBean(HelloWorld.class); 
    helloWorld.setMessage("Hello World!"); 
    helloWorld.getMessage(); 
} 

如下您可以加載各種配置類 - 使用的

public static void main(String[] args) { 
    AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); 

    ctx.register(AppConfig.class, OtherConfig.class); 
    ctx.register(AdditionalConfig.class); 
    ctx.refresh(); 

    MyService myService = ctx.getBean(MyService.class); 
    myService.doStuff(); 
} 

例子:

這裏是HelloWorldConfig.java文件的內容

package com.test; 
import org.springframework.context.annotation.*; 

@Configuration 
public class HelloWorldConfig { 
    @Bean 
    public HelloWorld helloWorld(){ 
     return new HelloWorld(); 
    } 
} 

這裏是HelloWorld.java的內容文件

package com.test; 

public class HelloWorld { 
    private String message; 

    public void setMessage(String message){ 
     this.message = message; 
    } 
    public void getMessage(){ 
     System.out.println("Your Message : " + message); 
    } 
} 

以下是MainApp的內容。java文件

package com.test; 

import org.springframework.context.ApplicationContext; 
import org.springframework.context.annotation.*; 

public class MainApp { 
    public static void main(String[] args) { 
     ApplicationContext ctx = 
     new AnnotationConfigApplicationContext(HelloWorldConfig.class); 

     HelloWorld helloWorld = ctx.getBean(HelloWorld.class); 
     helloWorld.setMessage("Hello World!"); 
     helloWorld.getMessage(); 
    } 
} 

一旦完成了創建所有源文件並添加了所需的附加庫,讓我們運行該應用程序。您應該注意,不需要配置文件。如果一切正常您的應用程序,它將打印以下消息 -

Your Message : Hello World!