springmvc:@value注解和最终变量

js81xvg6  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(325)

我有一个config.properties文件:

date_format="yyyy-MM-dd"

我的springmvc-servlet.xml:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:config/config.properties</value>
        </list>
    </property>
</bean>

这是我的控制器类:

@Controller
@RequestMapping("/T")
public class Test extends BaseController
{
    @Value("${date_format}")
    private static final String format; // Here, I want a final String as a constant

    @RequestMapping(value = "t2")
    @ResponseBody
    public String func(@RequestParam("date") @DateTimeFormat(pattern = format) Date date)
    {
        return date.toString();
    }
}

我想在最后一个变量上使用@value注解,该变量在注解@datetimeformat中使用。
@datetimeformat需要一个最终的字符串变量,这就是为什么我需要在最终变量上使用@value。但现在不行。有什么想法吗?

mpbci0fu

mpbci0fu1#

我回答了这样的问题https://stackoverflow.com/questions/7130425...
我将移除静态修饰符并执行类似的操作:

@Controller
@RequestMapping("/T")
public class Test extends BaseController{

   @Value("${date_format}")
   private final String format; // Removed static

   public Test (@Value("${date_format}") format){
     this.format = format;
   }

   @RequestMapping(value = "t2")
   @ResponseBody
   public String func(@RequestParam("date") @DateTimeFormat(pattern = format) Date date){
     return date.toString();
   }
}

这被称为构造函数注入。

相关问题