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注解来实现

  • 相关阅读:
    Redis
    多线程相关
    selenium操作浏览器的基本方法
    selenium之 webdriver与三大浏览器版本映射表(更新至v2.29)
    selenium安装及官方文档
    Python(3)_python对Json进行操作
    python类中的self参数和cls参数
    python3中shuffle函数
    Python3中assert断言
    python2和python3中range的区别
  • 原文地址:https://www.cnblogs.com/javafucker/p/10148464.html
Copyright © 2011-2022 走看看