当前位置: 首页 > 知识库问答 >
问题:

是否需要转义application.properties中的特殊字符?

须旭
2023-03-14

我在datasource password字段中有特殊字符,如“(双引号)、@,~,!,%,&,},”。当我运行springboot应用程序时,当它试图连接到我遇到的数据库时-

com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "problem accessing trust store"
Caused by: java.security.KeyStoreException: problem accessing trust store
Caused by: java.io.IOException: Keystore was tampered with, or password was incorrect
Caused by: java.security.UnrecoverableKeyException: Password verification failed

我的问题是:
(1)是否有方法查看Spring尝试连接时使用的密码?
(2)是否需要转义application.properties中密码中的任何特殊字符?

我能够使用一个独立的java程序连接到数据库,但是我必须转义密码中的双引号。我在后端使用了SpringBoot-2.0.4、Flyway-5.2.4、JDK1.8和MS-SQL server。

多谢了。

共有1个答案

丁毅庵
2023-03-14

application.properties:指定的字符不需要转义。

application.yml:使用包围值,并转义嵌入像这样\“

注意:application.yml不在OP的问题范围内。使用application.properties或application.yml,不要同时使用两者。

myapp.entry-with-special-characters=@~!%&=""
myapp:
  entry-with-special-characters: "@~!%&=\"\""
@Bean
public CommandLineRunner propertiesTest(@Value("${myapp.entry-with-special-characters}") String myVal) {
    return args -> System.out.printf("Test-output for StackOverflow: %s\n", myVal);
}
/**
 * Override default flyway initializer to do nothing
 */
@Bean
FlywayMigrationInitializer flywayInitializer(Flyway flyway, @Value("${myapp.entry-with-special-characters}") String myVal) {
    System.out.printf("Test-output for StackOverflow: %s\n", myVal);
    return new FlywayMigrationInitializer(flyway, (f) ->{} );
}

对问题的回答

有没有方法可以查看Spring使用什么密码来尝试连接?

可以将上面bean中的键myapp.entry-with-special-characters替换为application.properties中的相关键。请记住密码是秘密。

    null
 类似资料:
  • 问题内容: 根据选择器文档,必须使用双反斜杠等进行转义。 我有一个这样创建的选择器(假设属性在此示例中)。 我可以写一个正则表达式为我逃脱括号吗? 问题答案: 如果您希望某些东西具有任何价值,请尝试以下操作: 这可以通过用两个反斜杠转义jQuery文档的“ 选择器”页面上列出的所有CSS元字符来工作。 请记住,在您的情况下,无需执行此类棘手的操作。您可以使用过滤器功能选择具有给定值的所有选项元素,

  • 正如我们所看到的,一个反斜杠 "\" 是用来表示匹配字符类的。所以它是一个特殊字符。 还存在其它的特殊字符,这些字符在正则表达式中有特殊的含义。它们可以被用来做更加强大的搜索。 这里是包含所有特殊字符的列表:[ \ ^ $ . | ? * + ( )。 现在并不需要尝试去记住它们 —— 当我们分别处理其中的每一个时,你自然而然就会记住它们。 转义 如果要把特殊字符作为常规字符来使用,只需要在它前面

  • 问题内容: 我需要转义[在SQL Server的sql查询中 实际上,我实际上是在寻找[[,但我不希望它像通配符一样起作用。我试过了 : 但是从这里得到错误信息: 消息102,级别15,状态1,行1“某物”附近的语法不正确。消息105,级别15,状态1,行1字符串’后的右引号; 问题答案: 使用: 您也可以使用: 在MSDN上的LIKE(Transact-SQL)中描述。

  • 问题内容: 我想电视机1 ® 2的outputText: 什么不对?我大写。 问题答案: 您可以选择以下之一 在您最初的建议中,您放错了位置,应该在 您也可以完全删除(但您的(R)不会很小) 最后,您可以直接使用它而无需转义

  • 问题内容: Oracle中是否有一种简单的方法来转义SQL语句中的特殊字符?(即%,&,’)我看到了有关手动转义字符的链接,但我认为Oracle可能提供了一种更简便的方法。 注意:我正在通过ORM生成动态SQL select语句。 问题答案: 如果使用绑定变量和ORM,则应自动处理嵌入的单引号和“&”号。这些是SQL * Plus或SQL * Developer中的特殊字符。 要在查找文字字符%和

  • 问题内容: 对于此问题,我们希望避免编写特殊查询,因为该查询在多个数据库中必须有所不同。仅希望使用hibernate条件,我们希望能够转义特殊字符。 这种情况是需要转义特殊字符的原因: 假设我们在数据库中有表“ foo”。表’foo’仅包含1个字段,称为’name’。“名称”字段可以包含在数据库中可能被认为是特殊字符。此名称的两个示例是“ name_1”和“ name%1”。至少在Oracle中,