Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring-将@Bean添加到不带name属性的字符串中_Java_Spring_Spring Bean - Fatal编程技术网

Java Spring-将@Bean添加到不带name属性的字符串中

Java Spring-将@Bean添加到不带name属性的字符串中,java,spring,spring-bean,Java,Spring,Spring Bean,在字符串上添加@Bean有很多方法 您必须命名bean,然后在自动连接引用该名称时使用@Qualifier注释 但是在下面的代码中,没有name属性 @Configuration @PropertySource(value = { "classpath:my.properties" }) public class MyEnvironment { @Value("${MY_NAME}") String MY_NAME; @Value("${MY_NAME2}

在字符串上添加@Bean有很多方法

您必须命名bean,然后在自动连接引用该名称时使用@Qualifier注释

但是在下面的代码中,没有name属性

@Configuration
@PropertySource(value = { "classpath:my.properties" })
public class MyEnvironment {

    @Value("${MY_NAME}")            String MY_NAME;
    @Value("${MY_NAME2}")           String MY_NAME2;

    @Bean
    public String getMyName() {
        return MY_NAME;
    }
    @Bean
    public String getMyName2() {
        return MY_NAME2;
    }
}
使用方法调用它,如下所示:

myEnvironment.getMyName();

在这种情况下,
@Bean
不是多余的/不相关的吗?这项公约也会引起问题吗?还是有隐藏的好处?

考虑到Spring的意图是注入依赖性,在这个场景中,
@Bean
无疑是多余的

由于您的大多数类只使用配置对象
myEnvironment
,或者您可以说-dependent。因此,将
MyEnvironment
类作为单个单元注入依赖它的类,而不是单个
String
对象,更有意义


不过,这取决于您如何设计类及其依赖项。例如,您也可以直接在这些类上使用
@Value
将这两个字符串值注入到需要它的类中,而无需使用
MyEnvironment
类。

考虑到Spring的意图是注入依赖性,
@Bean
在这个场景中肯定是多余的

由于您的大多数类只使用配置对象
myEnvironment
,或者您可以说-dependent。因此,将
MyEnvironment
类作为单个单元注入依赖它的类,而不是单个
String
对象,更有意义


不过,这取决于您如何设计类及其依赖项。例如,您也可以直接在这些类上使用
@Value
将这两个字符串值注入到需要它的类中,而无需使用
MyEnvironment
类。

我同意,但理论上,如果所有这些属性都有
@Bean
注释,会发生什么?它会引起问题吗?我相信如果您有一个类声明了
@Autowired
,但没有指定
@限定符,Spring可能会抛出异常。是的,这里提到过。但是我们有这样一个类,它有多个属性被注释为
@Bean
,Spring不会抛出异常。对不起,我有点误解了你的观点。只要没有人试图将多个属性
@Autowired
声明为
@Bean
就可以了。就像spring有自己的默认机制来命名这些bean一样,所以不会发生冲突。只有当你试图得到这些豆子时,才会引起问题。请结帐:我同意,但理论上,如果所有这些属性都有
@Bean
注释,会发生什么?它会引起问题吗?我相信如果您有一个类声明了
@Autowired
,但没有指定
@限定符,Spring可能会抛出异常。是的,这里提到过。但是我们有这样一个类,它有多个属性被注释为
@Bean
,Spring不会抛出异常。对不起,我有点误解了你的观点。只要没有人试图将多个属性
@Autowired
声明为
@Bean
就可以了。就像spring有自己的默认机制来命名这些bean一样,所以不会发生冲突。只有当你试图得到这些豆子时,才会引起问题。请结帐:和