在 Spring Framework petclinic 中配置具有多个参数的 JDBC URL 时,& 和 & 均不起作用

Both & and & do not work when configuring a JDBC URL with more than one parameter in Spring Framework petclinic

当尝试在 STS 中使用带有 jetty:run-war -P MySQL 选项的 spring-framework-petclinic-master 应用程序时,我需要传递几个参数在 MySQL JDBC URL 中没有典型的选项有效,

jdbc:mysql://localhost:3306/petclinic?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

jdbc:mysql://localhost:3306/petclinic?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

成功了

您需要使用 CDATA 对 URL 进行双重转义,以便 XML 验证器忽略 & 然后使用 & 因为 JDBC 字符串是通过 XML 验证处理的. 以下确实有效:

<properties>
        <db.script>mysql</db.script>
        <jpa.database>MYSQL</jpa.database>
        <jdbc.driverClassName>com.mysql.cj.jdbc.Driver</jdbc.driverClassName>
        <jdbc.url><![CDATA[jdbc:mysql://localhost:3306/petclinic?useUnicode=true&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC]]></jdbc.url>
        <jdbc.username>petclinic</jdbc.username>
        <jdbc.password>petclinic</jdbc.password>
    </properties>