spring: application: name: meldestelle # --- ZENTRALE DATENBANK KONFIGURATION --- datasource: url: ${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/pg-meldestelle-db} username: ${SPRING_DATASOURCE_USERNAME:pg-user} password: ${SPRING_DATASOURCE_PASSWORD:pg-password} driver-class-name: org.postgresql.Driver # --- JPA / HIBERNATE DEFAULTS --- jpa: database-platform: org.hibernate.dialect.PostgreSQLDialect hibernate: ddl-auto: validate # In Production/Docker nutzen wir Flyway! open-in-view: false properties: hibernate: format_sql: true # --- FLYWAY MIGRATION --- flyway: enabled: ${SPRING_FLYWAY_ENABLED:true} baseline-on-migrate: true locations: classpath:db/migration # --- VALKEY KONFIGURATION (Redis-protokollkompatibel, Spring nutzt spring.data.redis.*) --- data: redis: host: ${SPRING_DATA_VALKEY_HOST:localhost} port: ${SPRING_DATA_VALKEY_PORT:6379} password: ${SPRING_DATA_VALKEY_PASSWORD:} connect-timeout: 5s timeout: 2s # --- CONSUL SERVICE DISCOVERY --- cloud: consul: host: ${SPRING_CLOUD_CONSUL_HOST:localhost} port: ${SPRING_CLOUD_CONSUL_PORT:8500} enabled: ${SPRING_CLOUD_CONSUL_ENABLED:true} discovery: enabled: ${SPRING_CLOUD_CONSUL_DISCOVERY_ENABLED:true} register: ${SPRING_CLOUD_CONSUL_DISCOVERY_REGISTER:true} prefer-ip-address: ${SPRING_CLOUD_CONSUL_DISCOVERY_PREFER_IP_ADDRESS:true} health-check-path: ${SPRING_CLOUD_CONSUL_DISCOVERY_HEALTH_CHECK_PATH:/actuator/health} health-check-interval: 10s instance-id: ${spring.application.name}:${random.value} service-name: ${spring.application.name} # --- SECURITY (OAUTH2 RESOURCE SERVER) --- security: oauth2: resourceserver: jwt: issuer-uri: ${SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI:http://localhost:8180/realms/meldestelle} jwk-set-uri: ${SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_JWK_SET_URI:http://localhost:8180/realms/meldestelle/protocol/openid-connect/certs} # --- OBSERVABILITY (ACTUATOR & ZIPKIN) --- management: endpoints: web: exposure: include: "health,info,prometheus,metrics" endpoint: health: show-details: always probes: enabled: true tracing: sampling: probability: ${MANAGEMENT_TRACING_SAMPLING_PROBABILITY:1.0} zipkin: tracing: endpoint: ${MANAGEMENT_ZIPKIN_TRACING_ENDPOINT:http://localhost:9411/api/v2/spans} # --- LOGGING --- logging: level: root: INFO at.mocode: DEBUG org.springframework.web: INFO org.springframework.security: INFO org.springframework.cloud.gateway: INFO pattern: level: "%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]"