Пружинный профиль - PullRequest
       0

Пружинный профиль

1 голос
/ 12 февраля 2020

У меня есть приложение Spring, которое я должен развернуть в производстве. К сожалению, я не могу включить профиль продукта. У меня есть файл application-dev.yml и application-prod.yml, а также application.yml. Мой application.yml выглядит следующим образом:

# ===================================================================
# Spring Boot configuration.
#
# This configuration will be overridden by the Spring profile you use,
# for example application-dev.yml if you use the "dev" profile.
#
# More information on profiles: http://www.jhipster.tech/profiles/
# More information on configuration properties: http://www.jhipster.tech/common-application-properties/
# ===================================================================

# ===================================================================
# Standard Spring Boot properties.
# Full reference is available at:
# http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
# ===================================================================


eureka:
    client:
        enabled: true
        healthcheck:
            enabled: true
        fetch-registry: true
        register-with-eureka: true
        instance-info-replication-interval-seconds: 10
        registry-fetch-interval-seconds: 10
    instance:
        appname: majurca
        instanceId: majurca:${spring.application.instance-id:${random.value}}
        lease-renewal-interval-in-seconds: 5
        lease-expiration-duration-in-seconds: 10
        status-page-url-path: ${management.context-path}/info
        health-check-url-path: ${management.context-path}/health
        metadata-map:
            zone: primary # This is needed for the load balancer
            profile: ${spring.profiles.active}
            version: ${info.project.version}
ribbon:
    eureka:
        enabled: true
management:
    security:
        roles: ADMIN
    context-path: /management
    info:
        git:
            mode: full
    health:
        mail:
            enabled: false # When using the MailService, configure an SMTP server and set this to true
spring:
    profiles:
        default: prod
        active: prod
    application:
        name: majurca
    jackson:
        serialization.write_dates_as_timestamps: false
    jpa:
        open-in-view: false
        hibernate:
            ddl-auto: none
            naming:
                physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
                implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
    messages:
        basename: i18n/messages
    mvc:
        favicon:
            enabled: false
    thymeleaf:
        mode: XHTML
security:
    basic:
        enabled: false

server:
    session:
        cookie:
            http-only: true

info:
    project:
        version: #project.version#

# ===================================================================
# JHipster specific properties
#
# Full reference is available at: http://www.jhipster.tech/common-application-properties/
# ===================================================================

jhipster:
    async:
        core-pool-size: 2
        max-pool-size: 50
        queue-capacity: 10000
    # By default CORS is disabled. Uncomment to enable.
    #cors:
        #allowed-origins: "*"
        #allowed-methods: "*"
        #allowed-headers: "*"
        #exposed-headers: "Authorization,Link,X-Total-Count"
        #allow-credentials: true
        #max-age: 1800
    mail:
        from: majurca@localhost
    swagger:
        default-include-pattern: /api/.*
        title: majurca API
        description: majurca API documentation
        version: 0.0.1
        terms-of-service-url:
        contact-name:
        contact-url:
        contact-email:
        license:
        license-url:
    ribbon:
        display-on-active-profiles: dev

# ===================================================================
# Application specific properties
# Add your own application properties here, see the ApplicationProperties class
# to have type-safe configuration, like in the JHipsterProperties above
#
# More documentation is available at:
# http://www.jhipster.tech/common-application-properties/
# ===================================================================

application:
    forms:
        register:
            autocomplete-cp-nbitems: 20


google:
  recaptcha:
    url: https://www.google.com/recaptcha/api/siteverify
    secret: 6Lci63UUAAAAAIsluk6G3ueNiJ_ET0m4luMsC8O5
    key: 6Lci63UUAAAAADFyeZFTkEaHshVK2LQgYV63PPD_

    #key: 6LfUG3UUAAAAAMxScj7ZFY-OXedoWLRzl0wryrrF
    #secret: 6LfUG3UUAAAAANsSIsCFOi3X9uYzS72De8EqKqNM

Итак, вы можете видеть, что spring.profiles.default и spring.pofiles.active установлены в prod. Я также пытался собрать приложение с помощью maven и опции -Dspring.profiles.active=prod, но, несмотря на это, каждый раз, когда я запускаю генерируемую войну, там написано The following profiles are active: swagger,dev.

У кого-нибудь есть идея, почему профиль prod не загружается? Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Я проверил в spring-boot 2.1.4 следующие конфигурации:

application.yaml:

spring:
 profiles:
   active: dev

application-dev.yaml:

sample:
  value: development

application-prod.yaml:

sample:
  value: production

И следующее (очень простое) приложение для весенней загрузки:

package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.event.EventListener;

@SpringBootApplication
public class DemoApplication {

    @Value("${sample.value}")
    private String sampleValue;
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);

    }

    @EventListener
    public void onAppStarted(ApplicationStartedEvent evt) {
        System.out.println("Sample Value: " + sampleValue);
    }

}

Эта конфигурация работает, даже если я не предоставляю никаких флагов : java -jar myapp.jar

Так что здесь должно быть что-то еще, связанное с вашим кодом.

Трудно сказать, что не так, не видя приложения, однако я нашел одно "подозрительное" утверждение:

Вы говорите, что независимо от того, что вы пытаетесь:

Следующие профили активны: Swagger, Dev

Теперь, где же «Swagger» профиль пришел? Я не вижу никакой ссылки на это. Если вы запускаете приложение с java -jar myapp.jar, я могу видеть одну возможность: где-то есть spring.factories файл, который определяет EnvironmentPostProcessor - это ловушка, где вы можете «поиграться» с профилями и, среди прочего, добавить активные профили ». вручную »(в коде).

Поэтому, пожалуйста, проверьте эту возможность, но опять же - то, что вы сделали, правильно при весенней загрузке (ну, технически вам не нужно вводить spring.profiles.default, но это не вредит)

0 голосов
/ 12 февраля 2020

Spring Boot может загружать одни и те же свойства из разных мест, где вы можете указать порядок загрузки в документах по адресу здесь .

Верхняя часть списка имеет более высокий приоритет загрузки чем нижняя часть. Это означает, что то, что вы определяете в application-xxx.yml, может быть переопределено теми же свойствами, которые также определены в переменной env OS или в свойствах JVM или et c .....

Поскольку аргументы командной строки имеют довольно высокий порядок загрузки, это означает, что в основном вы можете попытаться использовать его для установки профиля, добавив --spring.profiles.active=prod к команде, запускающей приложение, например:

$ java -jar myproject.jar --spring.profiles.active=prod
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...