• 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,在此作记录

  • 相关阅读:
    linux命令应用之一
    HIVE配置错误信息
    二分查找(JAVA)
    HBase1.0.1.1 API与原来有所不同
    hbase shell中log4j重复问题
    hadoop本地库无法加载
    利用mapreduce将数据从hdfs导入到hbase遇到的问题
    HBase伪分布式环境下,HBase的API操作,遇到的问题
    Hadoop开发中,如何开启、关闭控制台打印调试信息
    Hadoop的mapreduce开发过程,我遇到的错误集锦(持续更新)
  • 原文地址:https://www.cnblogs.com/Guhongying/p/10600795.html
Copyright © 2020-2023  润新知