Как прочитать файл .properties из библиотеки в проект Spring Maven

У меня есть один весенний проект maven (как библиотека), и я добавляю его как зависимость в весенний проект maven (веб-сервис). У меня есть некоторые файлы свойств в обоих проектах. В библиотеке есть один файл validationmessages.properties.

Я использую аннотации валидатора гибернации в своей модели. Например,

@NotBlank(message = "{NotBlank-entityId}")
Private String entityId;

Модель класса, которая находится в библиотеке, используется в качестве тела запроса в веб-службе, здесь сообщения проверки гибернации библиотеки не работают в веб-службе. Вот код:

Модель: Task.java (в библиотеке)

public class Task {

@NotBlank(message = "{NotNull-EntityID}")
  private String entityId;

public String getEntityId() {
    return entityId;
  }

  public void setEntityId(final String entityId) {
    this.entityId = entityId;
  }
}

Taskvalidationmessages.properties (в библиотеке)

NotNull-EntityID = Entity ID can not be null.

TaskManagementConfiguration.java (в библиотеке)

@Configuration
@PropertySources({ @PropertySource("classpath:queries.properties"),
    @PropertySource("classpath:Taskvalidationmessages.properties") })
@Import(DataSourceConfiguration.class)
public class TaskManagementConfiguration {

}

TaskResource.java (контроллер в проекте веб-сервиса)

@RequestMapping(value = WebserviceConstant.CREATE_TASK, method = RequestMethod.POST, produces = WebserviceConstant.APPLICATION_JSON)
  public ResponseEntity<CreateTaskResponse> createTask(
      @Valid @RequestBody final Task request,
      @RequestHeader(value = "access-token") final String accessToken) {

    return new ResponseEntity<CreateTaskResponse>(
        taskService.createTask(request, receivedToken), HttpStatus.CREATED);
  }

App.java (в проекте веб-службы)

@Configuration

@SpringBootApplication
@PropertySources({ @PropertySource("classpath:user-queries.properties") })

@Import({ TaskManagementConfiguration.class })
public class App {

  public static void main(final String[] args) {
    SpringApplication.run(App.class, args);
  }

}

Всякий раз, когда я нажимаю URL-адрес ресурса с пустым значением entityId. Выдает ошибку вида:

{
  "fieldErrors": [
    {
      "field": "entityId",
      "code": 200,
      "message": "{NotNull-EntityID}"
    }
  ]
} 

person Kishori    schedule 09.08.2016    source источник


Ответы (1)


Вам необходимо org.springframework.validation .beanvalidation.LocalValidatorFactoryBean

Добавьте bean-компонент валидатора в свои конфигурации (TaskManagementConfiguration).

@Bean(name = "messageSource")
public MessageSource messageSource()
{
    ReloadableResourceBundleMessageSource bean = new ReloadableResourceBundleMessageSource();
    bean.setBasename("classpath:Taskvalidationmessages");
    bean.setDefaultEncoding("UTF-8");
    return bean;
}

@Bean(name = "validator")
public LocalValidatorFactoryBean validator()
{
    LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
    bean.setValidationMessageSource(messageSource());
    return bean;
}
person kuhajeyan    schedule 09.08.2016
comment
Тем не менее это не работает. - person Kishori; 11.08.2016
comment
Вы можете обновить полную конфигурацию - person kuhajeyan; 11.08.2016