java - Spring SPEL表达式,访问嵌套接口(interface)String常量

标签 java spring spring-el

我使用嵌套接口(interface)来存储字符串常量:

public interface Constants{
    interface level1 {
        interface level2 {
            String CONSTANT = "constant";
        }
    }
}

我想将这些常量注入(inject)到 Spring 值字段中,我试过了:

 <entry key="key" value="#{com.company.Constants.level1.level2.CONSTANT}"/>
 <entry key="key" value="#{T(com.company.Constants.level1.level2).CONSTANT}"/>

但是它不起作用,正确的方法是什么?

最佳答案

当您编译代码时,Constants 接口(interface)会编译成 3 个类文件:

enter image description here

那是因为 level1 嵌套接口(interface)编译成名为 Constants$level1 的类文件,level2 嵌套接口(interface)编译成类文件名称为 Constants$level1$level2

现在您知道如何引用第二个嵌套的 level2 检索常量,如下所示:

<entry key="key" value="#{T(com.company.Constants$level1$level2).CONSTANT}"/>

关于java - Spring SPEL表达式,访问嵌套接口(interface)String常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16849895/

相关文章:

Java Swing 为 EXIT_ON_CLOSE 添加 Action 监听器

java - Neo4J创建关系在远程挂起,但节点创建成功

java - Spring Remoting - HTTP 调用者

java.lang.ClassNotFoundException : org. aspectj.util.PartialOrder$PartialComparable 问题

java - 使用 Spring Data 和 MySQL 运行 2 个事务方法时出现死锁

java - 在 Spring 表达式语言 (SpEL) 中评估属性

java - 当键改变时如何访问 Thymeleaf Spring 方言中的 map ?

java - 如何确定 ColdFusion 对象所在的上下文?

java - jmh 中的提前编译是否需要预热?

java - Spring @Value 与 arraylist 分割并获取第一个值