当前位置: 首页 > 知识库问答 >
问题:

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

严承允
2023-03-14

我正在使用Spring 4.0.1,希望使用enum实现一个singleton。我的单例对象需要我在属性文件中定义的服务器名。如何将这个值注入到singleton对象中?

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

请帮忙

共有1个答案

仲孙钊
2023-03-14

假设你有这样的东西

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已经提供了一种方法,可以有效地将单例与单例范围一起使用。

 类似资料:
  • 问题内容: 我们有一个枚举 此外,我们还有一个包含字符串的列表。有没有一种方法可以根据枚举定义的顺序(而不是自然顺序)对列表进行排序。 排序后的列表应为。 问题答案: 器具通过枚举(其中值声明的顺序)的自然顺序。如果仅通过解析创建枚举值(而不是字符串)的列表,则使用对该列表进行排序,它应该按照您想要的方式进行排序。如果您再次需要一个字符串列表,则可以通过调用每个元素来转换回来。

  • 问题内容: 我正在尝试使用Go枚举Windows注册表中的值列表,但遇到了一些麻烦。我尝试了两种方法:使用Go提供的库进行调用,以及使用lxn的Windows API包装器 。在两种情况下,我都遇到相同的问题。这是我正在使用的代码(当前正在使用来自lxn的win库): 在这种情况下,始终返回代码87,MSDN唯一的解释是“参数不正确”。 有没有人有任何想法可以为此指出正确的方向? 问题答案: Go

  • 枚举是一组命名的整型常量。枚举类型使用 enum 关键字声明。 C# 枚举是值的数据类型。换句话说,枚举包含它自己的值,不能继承或被继承。 声明枚举变量 用于声明枚举的一般语法: enum <enum_name> { enumeration list }; 这里 enum_name 指定枚举类型名称。 enumeration list 是一个逗号分隔的标识符的列表。 每个枚举列表中的符号表

  • 我有以下结构 包含枚举,该枚举包含或。现在我有了一个类,它包含一个。 这是在swagger yml中指定的(删除了一些不相关的代码) 我使用(也尝试了v3&openapi-generator)生成代码,配置如下: 现在发生的情况是,库将生成注释: 这里的问题是,如果我现在尝试反序列化/序列化包含带有的收件箱的Json字符串,它将引发异常,因为没有名称为的已知子类型。 seralizer期望注释指定

  • 问题内容: 这不是卡住我的问题,而是我正在寻找一种编写代码的整洁方法。 本质上,我正在编写一个事件驱动的应用程序。用户触发一个事件,该事件被发送到适当的对象,然后这些对象处理事件。现在,我正在编写偶数处理程序方法,并且希望使用switch语句确定如何处理事件。现在,在我研究通用结构时,事件类非常简单: 然后,在另一堂课中,我会看到类似以下内容的内容: 我会 喜欢 做的就是这样的事情(尽管我当然会坚

  • 问题内容: 枚举被认为是单例的最佳方式,其原因之一是它隐式继承。 但是,枚举如何防止单例的反序列化问题? 问题答案: 序列化机制以特殊的特定方式处理它们。但是,可以通过定义返回唯一实例的方法来对传统的单例进行反序列化。有关示例,请参见http://www.oodesign.com/singleton- pattern.html 。