Java 从Spring@Configuration类自动关联字符串?
我希望集中访问我所有的属性值,这样我就可以确保所有属性都使用相同的名称、相同的默认值等。我创建了一个类来集中所有这些属性,但我不确定需要访问这些值的类应该如何获得它们,因为不能自动连接字符串 我的班级是这样的:Java 从Spring@Configuration类自动关联字符串?,java,spring,Java,Spring,我希望集中访问我所有的属性值,这样我就可以确保所有属性都使用相同的名称、相同的默认值等。我创建了一个类来集中所有这些属性,但我不确定需要访问这些值的类应该如何获得它们,因为不能自动连接字符串 我的班级是这样的: @Configuration public class SpringConfig { @Autowired @Value("${identifier:asdf1234}") public String identifier; } 我可以在多个类中使用它 publ
@Configuration
public class SpringConfig {
@Autowired
@Value("${identifier:asdf1234}")
public String identifier;
}
我可以在多个类中使用它
public class Foo {
@Autowired
private String theIdentifier;
}
public class Bar {
@Autowired
private String anIdentifier;
}
在我看来,这个问题没有干净的解决办法。我能想到的最简单的方法是使用一个包含属性占位符的
静态
常量字符串
字段
public final class Constants {
private Constants() {}
public static final String PROPERTY_NAME= "${identifier.12345}";
}
并让所有的@Value
注释都使用它
public class Foo {
@Value(Constants.PROPERTY_NAME)
private String theIdentifier;
}
public class Bar {
@Value(Constants.PROPERTY_NAME)
private String anIdentifier;
}
现在,如果需要更改属性名称,只需在
常量中更改它即可但请确保重新编译所有内容。另一种解决方案是使用所有配置创建一个Springbean并自动连接它:
@Component
public class MyConfig {
@Value("${identifier:asdf1234}")
public String identifier;
public String getIdentifier() {
return identifier;
}
}
在你的其他课程中:
public class Foo {
@Autowired
private MyConfig myConfig;
public void someMethod() {
doSomething(myConfig.getIdentifier());
}
}
基于以下属性初始化了字符串bean:
@Configuration
public class SpringConfig {
@Bean
public String identifier(@Value("${identifier:asdf1234}") identifier) {
return identifier;
}
}
然后在@Value
注释中使用beanName表达式“#{beanName}
按bean名称注入它
@Component
public class Foo {
@Value("#{identifier}")
private String oneIdentifier;
}
public class Bar {
@Value("#{identifier}")
private String sameIdentifier;
}
你是说你想在多个bean中注入一个属性值,因此希望所有的@value
值都指向同一个属性名吗?是的。我用一个例子更新了它,试图更好地解释它。这暴露了属性名。这个答案应该更高