java 执行commandline,java – Spring启动CommandLineRunner异常处理

我们使用Spring-boot作为命令行应用程序.我们使用javax.validation来验证命令行参数.

现在,如果我们有验证错误,我们如何打印友好的错误消息?我们不想显示堆栈跟踪.

我们在运行Spring-boot作为CommandLineRunner时是否可以使用ExceptionHandler机制?

谢谢

阿伦

资源

@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找到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值