Java 在基于枚举的单例中注入值
我正在使用Spring4.0.1,希望使用enum实现一个单例。我的单例对象需要我在属性文件中定义的服务器名称。如何将此值注入singleton对象 每个服务器名称将有一个单例对象Java 在基于枚举的单例中注入值,java,spring,singleton,Java,Spring,Singleton,我正在使用Spring4.0.1,希望使用enum实现一个单例。我的单例对象需要我在属性文件中定义的服务器名称。如何将此值注入singleton对象 每个服务器名称将有一个单例对象 如果你有这样的东西,请帮助 public enum ServerSingleton { INSTANCE; private String serverName; public String getServerName() { return serverName; }
如果你有这样的东西,请帮助
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>
请注意,我不建议这样做。Spring已经提供了一种有效地使用singleton作用域创建singleton的方法。@amique我很高兴听到这个消息。
enum
解决方案很好,但应该只用于真正的常量元素。
@Value("${serverName}")
private String serverName;
@Bean
public ServerSingleton serverSingleton() {
ServerSingleton instance = ServerSingleton.INSTANCE;
instance.setServerName(serverName);
return instance;
}