spring-boot:如果密码失败,则启动没有数据库的应用程序
Posted
技术标签:
【中文标题】spring-boot:如果密码失败,则启动没有数据库的应用程序【英文标题】:spring-boot: start application without database if password fails 【发布时间】:2018-10-02 23:44:22 【问题描述】:我在两个具有不同数据库密码的实例中使用该应用程序。我的代码只需要访问和查询一个实例,不需要访问另一个实例上的数据库。如果我尝试使用错误的密码部署应用程序,它会给我“密码验证”错误并且不会启动应用程序。
如果密码验证失败,我希望应用忽略数据库连接。
这是我的 application.properties 文件。
spring.security.enabled=false
management.security.enabled=false
security.basic.enabled=false
## Postgresql for storing backup details
spring.jpa.hibernate.ddl-auto=update
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url= jdbc:postgresql://localhost:5432/dbName
spring.datasource.username=username
spring.datasource.password=password
#spring.datasource.continue-on-error=true
#spring.datasource.initialize=false
spring.jpa.database-platform = org.hibernate.dialect.PostgreSQL94Dialect
spring.datasource.primary.continueOnError=true
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
Spring Boot 版本是 1.5.9
【问题讨论】:
非常有趣,如果数据库身份验证失败,连接池也无法初始化,应用程序将无法启动。您要问的是重新尝试进行身份验证直到成功? @garfield,如果身份验证失败,我要问的是排除数据库/数据源连接。所以即使认证失败,应用程序应该仍然可以启动(即使它不能做任何数据库操作) 【参考方案1】:您可以在没有数据源的情况下运行 Spring Boot 应用程序。为此,您必须禁用数据源的自动配置,并且可能还禁用 JPA 自动配置。将以下行放入您的@SpringBootApplication
@EnableAutoConfiguration(exclude=DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class)
【讨论】:
但这会在整个应用程序中禁用它。我希望同一个 war 文件在两个实例上运行,一个在我需要数据库的地方,另一个在我不需要的地方。 @user2798227 在这种情况下,应用程序可能有两个不同的配置文件,一个是普通配置文件,另一个是 jusermar10 建议的配置文件。 是的,但我将在 100 个其他实例中部署它,因此我需要创建 100 个其他配置文件,即使我不想连接,我也需要在其中维护他们的数据库连接详细信息/访问他们的数据库。我希望有一个解决方案,即使数据库密码验证在启动时失败,它仍然可以启动应用程序。 @user2798227 我看到属性spring.datasource.continue-on-error=true
在您的属性文件中被注释掉了。它不工作吗?当我设置该属性时,我的 Spring Boot 应用程序在出现 password authentication failed
错误后正常启动。
不知道为什么它不适合你。能否请您发布您的pom.xml
进行检查。以上是关于spring-boot:如果密码失败,则启动没有数据库的应用程序的主要内容,如果未能解决你的问题,请参考以下文章
如何解决tomcat的问题? Spring-Boot“扫描失败”