【发布时间】:2019-11-19 22:57:18
【问题描述】:
我有一个使用 @NamedStoredProcedureQuery 的实体类,其中包含存储过程名称的属性 (procedureName)。用于查询的存储过程的名称在不同的环境中是不同的,因此我想从属性文件中获取名称(不同环境的属性文件也不同)。
我看到了一个类似的问题similar question in SO,人们提到不应该这样做,但这不是用例吗?这可以在不需要访问属性文件的情况下以不同的方式完成吗?
【问题讨论】:
-
注解属性必须是编译时常量。它不能是动态加载的运行时值。所以不,你不能那样做。
-
@JBNizet 感谢您的回复,出于我自己的澄清目的,我想将其发布。但是对于例如。 "@"Value 注释从我们指定属性的属性文件中获取值(我们没有将其指定为常量)。假设 app.properties 文件包含: factory.name.url = "example.com" 在包含 "@" 配置注释的类中,可以为其中一个类字段分配一个值,例如 "@"Value("${factory.name .url}”)。自从它从属性文件中读取并为其分配值后,它不是运行时间吗?
-
ugadi 是正确的。习惯于从 jar 中运行的开发人员可能会认为该属性是永久的,因为它被密封在 jar 中,但通常可以更改属性文件。
-
NamedStoredProcedureQuery 不是 Spring 注释。不支持 Spring 不由 Spring 处理的 Java EE 注释中的 Spring EL 表达式。
标签: java spring spring-boot spring-data-jpa javabeans