Spring @Configuration 和 @Bean 注解


@Configuration 和 @Bean 注解

帶有 @Configuration 的注解類表示這個類可以使用 Spring IoC 容器作為 bean 定義的來源。@Bean 注解告訴 Spring,一個帶有 @Bean 的注解方法將返回一個對象,該對象應該被注冊為在 Spring 應用程序上下文中的 bean。

例子如下:

HelloWorld.java

package com.how2java.w3cschool.baseonjava; public class HelloWorld { private String message; public void getMessage() { System.out.println("Your message is:" + message); } public void setMessage(String message) { this.message = message; } }

HelloWorldConfig.java

package com.how2java.w3cschool.baseonjava; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /* * 帶有 @Configuration 的注解類表示這個類可以使用 Spring IoC 容器作為 bean 定義的來源。 * @Bean 注解告訴 Spring,一個帶有 @Bean 的注解方法將返回一個對象,該對象應該被注冊為在 Spring 應用程序上下文中的 bean。 */ @Configuration public class HelloWorldConfig { // 帶有 @Bean 注解的方法名稱作為 bean 的 ID,它創建並返回實際的 bean。也就是此時的bean // id為helloWorld,你的配置類可以聲明多個 @Bean。 // 一旦定義了配置類,你就可以使用 AnnotationConfigApplicationContext 來加載並把他們提供給 Spring 容器
 @Bean public HelloWorld helloWorld() { return new HelloWorld(); } }

MainApp.java

package com.how2java.w3cschool.baseonjava; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; 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(); } }

如果在HelloWorldConfig.java中忘了@Bean的注解,將會遇到以下的錯誤

No unique bean of type [com.how2java.w3cschool.baseonjava.HelloWorld] is defined: expected single bean but found 0: ”

例子源於:W3Cschool,在此作記錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM