例如,我有一个bean类
class Sample {
private String message;
public void setMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
我想设置这个属性的值。
在Xml配置中,我可以
<bean id = "sample" class = "Sample"
<property name = "message" value = "Hello there!"/>
</bean>
我如何实现同样的事情,即设置属性的值使用Java注释?现在我已经读到,我们可以使用@Value注释使用一些属性文件,但它不能不使用属性文件,做的方式,我通过xml文件?或者使用属性文件是必要的?
我可以通过包含@Value(“你好!”
在setter方法上方。但我觉得这不是个好主意。如何使用Java注释为不同的实例设置属性值?
谢谢
根据您的要求,您有几个选择。在这两个示例中,您可以在setter而不是字段上设置注释。
这使您可以继续使用@Value
,更好地控制属性的提供方式。有大量的Properties tySource
实现,但是您总是可以创建自己的。
参考资料:
例子:
@Configuration
class MyConfiguration {
@Bean
PropertySource myPropertySource(ConfigurableEnvironment env) {
MapPropertySource source = new MapPropertySource("myPropertySource", singletonMap("myPropertyValue", "example"));
env.getPropertySources().addFirst(source);
return source;
}
}
class Sample {
@Value("${myPropertyValue}")
private String message;
public String getMessage() {
return message;
}
}
将bean定义为字符串,并使用其限定符自动连接它。
例子:
@Configuration
class MyConfiguration {
@Bean
String myPropertyValue() {
String value;
// do something to get the value
return value;
}
}
class Sample {
@Autowired
@Qualifier("myPropertyValue")
private String message;
public String getMessage() {
return message;
}
}
插入到@value
中的值可以来自属性文件以外的位置,例如,它也可以使用系统属性。
使用此处的指南作为起点,应该可以帮助您更好地理解。
作为一个基本且基本无用的用法示例,我们只能将注释中的“字符串值”注入字段:
@Value("string value")
private String stringValue;
使用@Properties tySource注释,我们可以使用@Value注释处理属性文件中的值。在以下示例中,我们将获得分配给字段的“从文件中获得的值”:
@Value("${value.from.file}")
private String valueFromFile;
我们还可以使用相同的语法从系统属性中设置值。让我们假设我们已经定义了一个名为system Value的系统属性,并查看以下示例:
@Value("${systemValue}")
private String systemValue;
可以为可能未定义的属性提供默认值。在本例中,将注入值“某些默认值”:
@Value("${unknown.param:some default}")
private String someDefault;
我想根据“配置文件”设置注释的值。 让我举个例子来解释; 在上面的例子中,我们可以看到活动的“配置文件”是PROD,但是假设我们想要使用DEV配置文件,我们将不得不注释来自PROD的@Table注释,并取消注释DEV@Table注释。 如果这只针对一个实体,那不会是一个问题,但我有很多实体都有这种情况,所以我不认为这是处理这种即兴“简介”的方式。 你知道有什么办法可以解决这种情况吗?
尝试使用spring绑定属性文件中的int值 它也不起作用。 请建议什么是使它工作的方法。
我有一个Spring的豆子,定义为: 但是,属性< code > prop . loyalty . expering . points . time zone 导致< code > TypeMismatchException 出现以下消息: org.springframework.beans。TypeMismatchException:无法将类型“java.lang.String”的属性值转换为所
我想使用自定义Java注释,使用Spring AOP(和/或AspectJ)在私有类属性中插入一个值。快速示例: 我的注释。java: MyController.java: 我的方面。java: 我将调用并进入,在它返回后,我希望在控制台或日志中看到“helloworld”。我想使用AOP将var1设置为自定义值。用MyAnnotation注释的任何属性变量都将设置为“helloworld”。我希
我在我的一个项目中有这个注释类。 注释类由我定义。 问题:我可以代替String使用一些属性 ,其值在编译时未知,但仅在运行时未知吗? 作为参考,这里是我的注释类型的定义。
问题内容: 配置 : Spring 2.5,Junit 4,Log4j 从系统属性中指定log4j文件位置 在运行时,使用-D java选项设置系统属性。一切都很好。 问题/我需要什么: 在单元测试时,未设置系统属性,并且文件位置未解析。 App使用Spring,想简单地配置Spring以 设置 系统属性。 更多信息: 要求仅用于配置。无法引入新的Java代码或IDE中的条目。理想情况下,Spri