Java 在基于枚举的单例中注入值

Java 在基于枚举的单例中注入值,java,spring,singleton,Java,Spring,Singleton,我正在使用Spring4.0.1,希望使用enum实现一个单例。我的单例对象需要我在属性文件中定义的服务器名称。如何将此值注入singleton对象 每个服务器名称将有一个单例对象 如果你有这样的东西,请帮助 public enum ServerSingleton { INSTANCE; private String serverName; public String getServerName() { return serverName; }

我正在使用Spring4.0.1,希望使用enum实现一个单例。我的单例对象需要我在属性文件中定义的服务器名称。如何将此值注入singleton对象

每个服务器名称将有一个单例对象


如果你有这样的东西,请帮助

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;
}