使用@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!
春天核心參考:https://docs.spring.io/spring/docs/current/spring-framework-reference/ – Ivan