получить доступ к externalize application.properties в загрузочном приложении Tomcat для Spring? - PullRequest
0 голосов
/ 04 марта 2019

У меня есть приложение весенней загрузки.

Я пытаюсь получить доступ к файлу application.properties из папки tomcat.

Я перешел по этой ссылке: Как экспортировать application.properties в Tomcatвеб-сервер для Spring?

MortgageLoanApiApplication

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 Software Foundation \ 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 Software Foundation \ 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).

Дайте мне знать, как это исправить. Или если есть какой-либо другой способ доступа к файлу свойств из расположения tomcat с помощью весенней загрузки.

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Для доступа к файлу application.properties из каталога tomcat.тогда нам нужно выполнить следующие шаги

Нужно добавить плагин в pom.xml.это означает, что он будет игнорировать файл application.properties рабочей области после развертывания

<!-- 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 location.затем нам нужно изменить файл ServletInitializer.java.

"classpath:mortgage-api/" означает, что нам нужно создать папку с именем mortgage-api в папке lib tomcat и скопировать файл application.properties в это место.проверьте код комментария.

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, затем создайте файл войны mvn install

0 голосов
/ 04 марта 2019

Пожалуйста, добавьте -

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

или

Используйте аннотацию над классом -

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...