Spring boot Обработка исключений CommandLineRunnerJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring boot Обработка исключений CommandLineRunner

Сообщение Anonymous »

Мы используем Spring-boot для приложения командной строки. Мы используем javax.validation для проверки аргументов командной строки.

Теперь, если у нас возникла ошибка проверки, как мы можем напечатать понятное сообщение об ошибке? Мы не хотим показывать трассировку стека.

Есть ли механизм ExceptionHandler, который мы могли бы использовать, когда запускаем Spring-boot как CommandLineRunner?

Спасибо
Арун

Источник

Код: Выделить всё

    @SpringBootApplication
public class Deploy implements CommandLineRunner {
private static final Logger LOGGER = LoggerFactory.getLogger(Deploy.class);

@Autowired
private DeployConfig config;

@Autowired
private DeployService deployService;

/**
* mvn clean package spring-boot:repackage
* java -jar target/spring-boot-example-1.0.0-SNAPSHOT.jar --spring.profiles.active=qa --version=1.0
*
* @param strings arguments
* @throws Exception
*/

@Override
public void run(String... strings) throws Exception {
try {
deployService.deploy(config);
} catch (Exception ve) {
LOGGER.error("Error : {}", ve.getMessage());
}

LOGGER.info("Created stack={}", config.getVersion());
}

public static void main(String... args) {
LOGGER.info("Starting to run...");
SpringApplication.run(Deploy.class, args);
LOGGER.info("Completed the run...");
}
}
Конфигурация

Код: Выделить всё

@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
public class DeployConfig {

@NotNull
private String hello;

@NotNull
private String version;

private String envKey;

public String getHello() {
return hello;
}

public void setHello(String hello) {
this.hello = hello;
}

public String getVersion() {
return version;
}

public void setVersion(String version) {
this.version = version;
}

public String getEnvKey() {
return envKey;
}

public void setEnvKey(String envKey) {
this.envKey = envKey;
}

public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
Чистый запуск

Код: Выделить всё

mvn clean package spring-boot:repackage
java -jar target/spring-boot-example-1.0.0-SNAPSHOT.jar --spring.profiles.active=preprod,qa --version=1.0
Проверка

Код: Выделить всё

java -jar target/spring-boot-example-1.0.0-SNAPSHOT.jar --spring.profiles.active=preprod,qa
Ошибка проверки

Код: Выделить всё

2014-12-25 20:51:13,325 ERROR [main] [o.s.b.SpringApplication.run()] - Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'deploy': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.example.DeployConfig com.example.Deploy.config; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'deployConfig': Could not bind properties; nested exception is org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'target' on field 'version': rejected value [null]; codes [NotNull.target.version,NotNull.version,NotNull.java.lang.String,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [target.version,version]; arguments []; default message [version]]; default message [may not be null]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) ~[spring-beans-4.1.3.RELEASE.jar!/:4.1.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202) ~[spring-beans-4.1.3.RELEASE.jar!/:4.1.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537) ~[spring-beans-4.1.3.RELEASE.jar!/:4.1.3.RELEASE]
Полный исходный код

Исходный код можно найти на GitHub

Подробнее здесь: https://stackoverflow.com/questions/276 ... n-handling
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»