我正在使用Spring 4.0.1并希望使用枚举实现单例。我的单例对象需要我在属性文件中定义的服务器名称。如何将此值注入单个对象?
每个服务器名称都有一个单例对象。
请帮忙
答案 0 :(得分:1)
假设你有类似的东西
public enum ServerSingleton {
INSTANCE;
private String serverName;
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
}
您可以使用以下bean定义
设置INSTANCE.serverName
字段
<bean class="com.spring.Example$ServerSingleton" factory-method="valueOf">
<constructor-arg value="INSTANCE" />
<property name="serverName" value="${serverName}"></property>
</bean>
或者,在Java @Configuration
类
@Value("${serverName}")
private String serverName;
@Bean
public ServerSingleton serverSingleton() {
ServerSingleton instance = ServerSingleton.INSTANCE;
instance.setServerName(serverName);
return instance;
}
请注意,我不建议这样做。 Spring已经提供了一种有效地使用单例范围的单例的方法。