zoukankan      html  css  js  c++  java
  • Springboot@Configuration和@Bean详解

    Springboot@Configuration和@Bean详解

    一、@Configuration

    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    public @interface Configuration {
        @AliasFor(
            annotation = Component.class
        )
        String value() default "";
    }

    可以看到在@Configuration注解中是包含@Component注解的,被@Configuration修饰的类被定义为一个Spring容器(应用上下文)

    @Configuration就相当于Spring配置文件中的<beans />标签,里面可以配置bean

    二、@Bean

    @Bean相当于Spring配置文件中的<bean />标签可以在Spring容器中注入一个bean

    @Configuration
    public class TestConfiguration {
    
        @Bean
        public TestBean testBean() {
            return new TestBean();
        }
    
    }

    上述代码相当于实例化一个TestBean并交给Spring容器管理

    ps: 

    1、@Bean注解在返回实例的方法上,如果未通过@Bean指定bean的名称,则默认与方法名相同

    2、@Bean注解默认作用域为单例singleton作用域,可通过@Scope(“prototype”)设置为多例

    三、依赖注入

    @Configuration
    public class TestConfiguration {
    
        @Bean
        public TestBean testBean() {
            return new TestBean();
        }
    
        @Bean
        public DIBean diBean() {
            return new DIBean(testBean());
        }  
    
    }

    如上述代码,通过在@Bean方法中调用其他@Bean注解的方法来实现依赖注入

     ps:

    当需要强制指定实例化bean的顺序,可以通过@Order或@DependsOn注解来实现

  • 相关阅读:
    stl测试
    noip2017逛公园
    比赛
    莫队算法
    noi.ac 第五场第六场
    重排DL
    bzoj2870
    异象石(就是sdio宝藏那题)
    Genius ACM
    模板复习
  • 原文地址:https://www.cnblogs.com/javafucker/p/10148464.html
Copyright © 2011-2022 走看看