使用值方法将名称设置为 Bean

Set Name to Bean with value method

在使用bean注解的value或name方法时给bean设置名称有什么不同吗

@Configuration
public class OperationConfig {

    @Bean(name = "test")
    public IOperation getOperation()
    {
         return new IntMultiplyOperation();
    }
}

@Configuration
public class OperationConfig {

    @Bean("test")
    public IOperation getOperation()
    {
         return new IntMultiplyOperation();
    }
}

Spring 可以用这个构造函数捕获他们两个

@Configuration
public class ApplicationRunnerConfig {
    private final IOperation m_operation;

    public ApplicationRunnerConfig(@Qualifier("test") IOperation operation)
    {
        m_operation = operation;
     }
}

没有任何字段引用的注释映射到 value 属性,并且在 @Bean 注释中 value is alias for name 两种方式是相同的。

查看更多信息
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Bean.html

这些方法之间没有区别。 Spring 默认情况下将括号中的字符串参数设置为名称参数。

他们做同样的事情。看看 @Bean 接口文件:

public @interface Bean {
    @AliasFor("name")
    String[] value() default {};

    @AliasFor("value")
    String[] name() default {};
}

他们使用 @AliasFor,这是一个 Spring 注释,表明这些属性可以互换使用。