Java Spring-将@Bean添加到不带name属性的字符串中
在字符串上添加@Bean有很多方法 您必须命名bean,然后在自动连接引用该名称时使用@Qualifier注释 但是在下面的代码中,没有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}
@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一样,所以不会发生冲突。只有当你试图得到这些豆子时,才会引起问题。请结帐:和