Java 我可以防止Spring Boot捕获Mysql异常,而不是抛出我自己的异常吗?

Java 我可以防止Spring Boot捕获Mysql异常,而不是抛出我自己的异常吗?,java,spring,spring-boot,Java,Spring,Spring Boot,嗨,我正在做一个spring引导服务器,我意识到为了注册一个用户,我首先要检查它是否存在。这意味着微软azure需要更多的sql查询和资金 我一直在尝试一些在线选项,主要是实现SQLExceptionTranslator或扩展它的子类,我试图通过创建一个CommandLineRunner并在那里设置它来将它注入jdbc模板对象。问题是:它就是不起作用。我在我的实现中放入了大量的打印,但没有打印任何内容。它只是不使用它,一直将SQLIntegrityConstraintViolationExcep

嗨,我正在做一个spring引导服务器,我意识到为了注册一个用户,我首先要检查它是否存在。这意味着微软azure需要更多的sql查询和资金

我一直在尝试一些在线选项,主要是实现
SQLExceptionTranslator
或扩展它的子类,我试图通过创建一个CommandLineRunner并在那里设置它来将它注入jdbc模板对象。问题是:它就是不起作用。我在我的实现中放入了大量的打印,但没有打印任何内容。它只是不使用它,一直将
SQLIntegrityConstraintViolationException
默认为spring管理的
DataIntegrityViolationException
。 有没有办法让我进行映射,而不是让spring进行映射,然后在
@服务上捕获并解析它

编辑:如果你们中的任何人知道我应该向jdbc模板注入我的实现,那也会很好地工作。我尝试过在
命令行运行程序中自动布线和设置,我不知道其他任何设置方法,这一个失败得很惨

编辑2我的最基本的实现(基本的只是测试它是否能工作)

然后添加到模板中

@Autowired
JdbcTemplate t;
    

@Override
public void run(String... args) throws Exception {
    t.setExceptionTranslator(new SqlExceptionResolver());
}

您能给我们看一下您的SQLExceptionTranslator吗…至少它的签名和您在上面添加的注释?(如果这样做的话,也可以使用XML)。另外,您能告诉我们您是如何在CommandLineRunner中进行“设置”的吗?奇怪的是,你就是在那里做这件事的。更合适的位置是附加到应用程序上下文的侦听器,或者类似的地方。不过,它可以工作。好吧……那么现在您如何让Spring使用该类呢?没有迹象表明这是Spring应该知道的。除非你有一些引用该类的XML,否则它不是一个Bean。我编辑了这篇文章,我知道它很简单,但我测试它是否有效,然后构建它word模板让我担心。我想知道你的JDBC连接是否已经使用你正在修改的JdbcTemplate建立起来了,因此在游戏后期修改这个模板是没有效果的。我对JDBC不太了解。我只知道模板意味着其他东西是由该对象创建的,如果已经发生了这种情况,更改模板不会导致行为的任何更改。只是一个猜测。我还试图将它定义为一个bean,但后来互联网告诉我在jdbc中设置它。我应该把它也当作豆子吗?
@Autowired
JdbcTemplate t;
    

@Override
public void run(String... args) throws Exception {
    t.setExceptionTranslator(new SqlExceptionResolver());
}