Spring 弹簧数据-在投影中使用特性值
我有一个SpringDataREST应用程序,我在其中创建了这样一个投影Spring 弹簧数据-在投影中使用特性值,spring,spring-boot,spring-data,projection,Spring,Spring Boot,Spring Data,Projection,我有一个SpringDataREST应用程序,我在其中创建了这样一个投影 @Projection(name = "UserWithAvatar", types = { User.class }) public interface UserWithAvatar { String getName(); String getEmail(); @Value("${app.url}/pictures/#{target.imageId}") String getAvatar
@Projection(name = "UserWithAvatar", types = { User.class })
public interface UserWithAvatar {
String getName();
String getEmail();
@Value("${app.url}/pictures/#{target.imageId}")
String getAvatar();
}
非工作部分是getAvatar
,它生成一个用于查看图片的url。但是,此
${app.url}
在投影中不起作用。如何在其中添加这个application.properties值?在
{}
块中使用@environment.getProperty('app.url')
。它在SpringBoot2.3.0上运行,我不确定是否有旧版本
例如:
@Value("#{target.pictureUrl ?: @environment.getProperty('app.url') + 'static/default-avatar.png'}")
String getAvatarUrl();
@Value(“{${app.url}/pictures/{target.imageId}”)
或类似的东西@我尝试了@Value(#{${app.url}+'/pictures/'+target.imageId}”)
,但不幸的是没有成功。它返回一个EL1041E:解析有效表达式后,表达式中还有更多数据:“lcurly({)”然后出现错误。@它们在投影中的死区可能访问systemProperties
direcly@Value(“#{systemProperties['app.url']+'/pictures/'+target.imageId}”)
?@MartinBG显然,应用程序.properties
值不在系统属性中,或者您的示例中出现其他问题。在类型为“org.springframework.data.projection.SpelEvaluatingMethodInterceptor$targetDrapper”的对象上找不到属性或字段“systemProperties”—可能不是公共的或无效?