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