无法解析@Value(“ $ {xxx:}”)(春季4),但可以解析@Value(“ $ {xxx}”)

时间:2018-10-29 09:50:05

标签: java spring

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class ServiceTest {
    public static String coreIp;
    public static String corePort;

    @Value("${core_ip}")
    private void setcoreIp(String coreIp) {
    ServiceTest.coreIp = coreIp;
    }
    @Value("${core_port:}")
    private void setcorePort(String corePort) {
    ServiceTest.corePort = corePort;
    }
}

我可以获取coreIp的值,但是我无法获取corePort的值。该代码存在于Spring中。当我在@Value中删除':'时,它起作用了。当我将此代码移至Spring MVC时,它可以工作,并且我可以同时获得两个价值。

Spring和SpringMVC在解析@Value时是否有任何区别。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

问题是SpEL ${core_port:}希望为core_port属性提供默认值。因此,请为core_port提供一个默认值(例如${core_value:3000}),或者通过删除分号来重命名您的媒体资源。

编辑:

由于您的core_port是字符串类型,因此该值将是一个空字符串。