如何使用Spring在编译时加载任何属性文件?

时间:2018-10-08 04:45:55

标签: java spring

我想在spring POJO类中加载任何属性文件。

实际上,我想使用@Size@NotNull中属性文件中的任何属性或spring模型类中的任何验证注释。

但是问题是@Size@NotNull等注释在编译时被调用,而任何属性文件的数据在运行时被调用。

甚至,我想在max的{​​{1}}参数中使用它接受唯一的常数整数。如何加载值并将其强制转换为整数?

我可以使用自定义验证器或任何自定义批注来解决此问题,但是根据组织政策,我不能使用太多自定义。

1 个答案:

答案 0 :(得分:0)

我找到了解决此问题的另一种方法,我们可以使用一类常量而不是属性文件。

我可以在工作区中的任何地方使用此常量文件,而属性文件不能在模型验证的Size.max属性中使用

CommonConstants.java

public class CommonConstants 
{
    public static final int NAME=4;
    public static final int ROLE=2;
}

Employee.java

private int id;
@Size(max = CommonConstants.NAME, message = "length exceeds : name")
private String name;
@Size(max = CommonConstants.ROLE, message = "length exceeds : role")
private String role;

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getRole() {
    return role;
}

public void setRole(String role) {
    this.role = role;
}

EmployeeController.java

@Controller
public class EmployeeController {

private static final Logger logger = LoggerFactory.getLogger(EmployeeController.class);

private Map<Integer, Employee> emps = null;

public EmployeeController() {
    emps = new HashMap<Integer, Employee>();
}

@RequestMapping(value = "/emp/save.do", method = RequestMethod.POST)
public String saveEmployeeAction(@Valid Employee employee, BindingResult bindingResult, Model model) 
  {
    if (bindingResult.hasErrors()) {
        logger.info("Returning empSave.jsp page");
        return "empSave";
    }
    logger.info("Returning empSaveSuccess.jsp page");
    model.addAttribute("emp", employee);
    emps.put(employee.getId(), employee);
    return "empSaveSuccess";
  }
}

输出

enter image description here