我有Spring Boot应用程序。
我试图从tomcat位置访问application.properties文件。
抵押贷款抵押申请书
package com.Mortgage.MortgageLoanAPI; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MortgageLoanApiApplication { public static void main(String[] args) { System.setProperty("spring.config.name", "application"); SpringApplication.run(MortgageLoanApiApplication.class, args); } }
ServletInitializer
package com.Mortgage.MortgageLoanAPI; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(MortgageLoanApiApplication.class).properties("spring.config.name: application"); } }
C:\ Program Files \ Apache软件基金会\ Apache Tomcat 8.0.9 \ bin \ setenv.sh
export spring_config_location=C:/Program Files/Apache Software Foundation/Apache Tomcat 8.0.9/conf/
C:\ Program Files \ Apache软件基金会\ Apache Tomcat 8.0.9 \ conf \ application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/mortgage_loan spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver spring.datasource.username=root spring.datasource.password=root
但是当我运行应用程序或构建应用程序时。它显示错误,因为未找到数据库连接。
2019-03-04 10:53:28.318 INFO 2872 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2019-03-04 10:53:28.325 ERROR 2872 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
让我知道如何解决此问题。或者是否还有其他方法可以使用Spring Boot从tomcat位置访问属性文件。
从tomcat目录访问application.properties文件。那么我们需要遵循以下步骤
需要在中添加插件pom.xml。这意味着部署后它将忽略工作区的application.properties文件
pom.xml
<!-- Added the below plugin to not include the application.properties inside the war --> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> <packagingExcludes> **/application.properties/ </packagingExcludes> </configuration> </plugin>
需要将application.properties文件复制到tomcat目录lib位置。那么我们需要更改ServletInitializer.java文件。
lib
ServletInitializer.java
"classpath:mortgage-api/"意味着我们需要mortgage-api在tomcat lib文件夹中创建一个名称为的文件夹,并将application.properties文件复制到该位置。检查代码注释。
"classpath:mortgage-api/"
mortgage-api
import java.util.Properties; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(MortgageLoanApiApplication.class).properties(loadproperties()); } /** * Added this method to load properties from the classpath while intializing the server app * location of the properties file should be inside tomcat directory: * lib/mortgage-api/application.properties * @return */ private Properties loadproperties() { Properties props = new Properties(); props.put("spring.config.location", "classpath:mortgage-api/"); return props; } }
然后mvn clean,然后建立war文件mvn install
mvn clean
mvn install