Common application properties
JHipster generates a Spring Boot application, and can be configured using the standard Spring Boot properties mechanism.
Those properties are configured at generation-time by JHipster, and often have different values in development and production modes: learn more about this in our Profiles documentation.
In a JHipster application, there are three kinds of properties:
- Spring Boot standard application properties
- JHipster application properties
- Application-specific properties
Spring Boot standard application properties
Like any Spring Boot application, JHipster allows you to configure any standard Spring Boot application property.
JHipster application properties
JHipster provides specific application properties, which come from the JHipster server-side library. Those properties are standard for all JHipster projects, but some of them only work depending on what you selected when you built your application: for example the jhipster.cache.hazelcast
key only works if you selected Hazelcast as your 2nd-level Hibernate cache.
Those properties are configured using the io.github.jhipster.config.JHipsterProperties
class.
Here is a documentation for those properties:
jhipster:
# Thread pool that will be used for asynchronous method calls in JHipster
async:
core-pool-size: 2 # Initial pool size
max-pool-size: 50 # Maximum pool size
queue-capacity: 10000 # Queue capacity of the pool
# Specific configuration for JHipster gateways
# See https://www.jhipster.tech/api-gateway/ for more information on JHipster gateways
gateway:
rate-limiting:
enabled: false # Rate limiting is disabled by default
limit: 100_000L # By default we allow 100,000 API calls
duration-in-seconds: 3_600 # By default the rate limiting is reinitialized every hour
authorized-microservices-endpoints: # Access Control Policy, if left empty for a route, all endpoints will be accessible
app1: /api # recommended prod configuration, it allows the access to all API calls from the "app1" microservice
# HTTP configuration
http:
# V_1_1 for HTTP/1.1 or V_2_0 for HTTP/2.
# To use HTTP/2 you will need SSL support (see the Spring Boot "server.ssl" configuration)
version: V_1_1
#Force the server cipher suite to follow the exact order specifying in server.ssl.ciphers (For perfect forward secrecy)
useUndertowUserCipherSuitesOrder: true
cache: # Used by io.github.jhipster.web.filter.CachingHttpHeadersFilter
timeToLiveInDays: 1461 # Static assets are cached for 4 years by default
# Hibernate 2nd level cache, used by CacheConfiguration
cache:
hazelcast: # Hazelcast configuration
time-to-live-seconds: 3600 # By default objects stay 1 hour in the cache
backup-count: 1 # Number of objects backups
# Configure the Hazelcast management center
# Full reference is available at: http://docs.hazelcast.org/docs/management-center/3.9/manual/html/Deploying_and_Starting.html
management-center:
enabled: false # Hazelcast management center is disabled by default
update-interval: 3 # Updates are sent to the Hazelcast management center every 3 seconds by default
# Default URL for Hazelcast management center when using JHipster's Docker Compose configuration
# See src/main/docker/hazelcast-management-center.yml
# Warning, the default port is 8180 as port 8080 is already used by JHipster
url: http://localhost:8180/mancenter
ehcache: # Ehcache configuration
time-to-live-seconds: 3600 # By default objects stay 1 hour in the cache
max-entries: 100 # Number of objects in each cache entry
caffeine: # Caffeine configuration
time-to-live-seconds: 3600 # By default objects stay 1 hour in the cache
max-entries: 100 # Number of objects in each cache entry
infinispan: #Infinispan configuration
config-file: default-configs/default-jgroups-tcp.xml
# local app cache
local:
time-to-live-seconds: 60 # By default objects stay 1 hour (in minutes) in the cache
max-entries: 100 # Number of objects in each cache entry
#distributed app cache
distributed:
time-to-live-seconds: 60 # By default objects stay 1 hour (in minutes) in the cache
max-entries: 100 # Number of objects in each cache entry
instance-count: 1
#replicated app cache
replicated:
time-to-live-seconds: 60 # By default objects stay 1 hour (in minutes) in the cache
max-entries: 100 # Number of objects in each cache entry
# Memcached configuration
# Uses the Xmemcached library, see https://github.com/killme2008/xmemcached
memcached:
# Disabled by default in dev mode, as it does not work with Spring Boot devtools
enabled: true
servers: localhost:11211 # Comma or whitespace separated list of servers' addresses
expiration: 300 # Expiration time (in seconds) for the cache
use-binary-protocol: true # Binary protocol is recommended for performance (and security)
# E-mail properties
mail:
enabled: false # If e-mail sending is enabled. The standard `spring.mail` keys will need to be configured
from: jhipster@localhost # The default "from" address for e-mails
base-url: http://127.0.0.1:8080 # URL to the application, used inside e-mails
# Spring Security specific configuration
security:
remember-me: # JHipster secure implementation of the remember-me mechanism, for session-based authentication
# security key (this key should be unique for your application, and kept secret)
key: 0b32a651e6a65d5731e869dc136fb301b0a8c0e4
client-authorization: # Used with JHipster UAA authentication
access-token-uri: # URL of the JHipster UAA server OAuth tokens
token-service-id: # ID of the current application
client-id: # OAuth client ID
client-secret: # OAuth client secret
authentication:
jwt: # JHipster specific JWT implementation
# The secret token should be encoded using Base64 (you can type `echo 'secret-key'|base64` on your command line).
# If both properties are configured, the `secret` property has a higher priority than the `base64-secret` property.
secret: # JWT secret key in clear text (not recommended)
base64-secret: # JWT secret key encoded in Base64 (recommended)
token-validity-in-seconds: 86400 # Token is valid 24 hours
token-validity-in-seconds-for-remember-me: 2592000 # Remember me token is valid 30 days
# Swagger configuration
swagger:
default-include-pattern: /api/.*
title: JHipster API
description: JHipster API documentation
version: 0.0.1
terms-of-service-url:
contact-name:
contact-url:
contact-email:
license:
license-url:
host:
protocols:
# DropWizard Metrics configuration, used by MetricsConfiguration
metrics:
jmx: # Export metrics as JMX beans
enabled: true # JMX is enabled by default
# Send metrics to a Graphite server
# Use the "graphite" Maven profile to have the Graphite dependencies
graphite:
enabled: false # Graphite is disabled by default
host: localhost
port: 2003
prefix: jhipster
# Send metrics to a Prometheus server
prometheus:
enabled: false # Prometheus is disabled by default
endpoint: /prometheusMetrics
logs: # Reports Dropwizard metrics in the logs
enabled: false
reportFrequency: 60 # frequency of reports in seconds
# Logging configuration, used by LoggingConfiguration
logging:
logstash: # Forward logs to Logstash over a socket
enabled: false # Logstash is disabled by default
host: localhost # Logstash server URL
port: 5000 # Logstash server port
queue-size: 512 # Queue for buffering logs
spectator-metrics: # Reports Netflix Spectator metrics in the logs
enabled: false # Spectator is disabled by default
# By default cross-origin resource sharing (CORS) is enabled in "dev" mode for
# monoliths and gateways.
# It is disabled by default in "prod" mode for security reasons, and for microservices
# (as you are supposed to use a gateway to access them).
# This configures a standard org.springframework.web.cors.CorsConfiguration
# Note that "exposed-headers" is mandatory for JWT-based security, which uses
# the "Authorization" header, and which is not a default exposed header.
cors:
allowed-origins: "*"
allowed-methods: "*"
allowed-headers: "*"
exposed-headers: "Authorization"
allow-credentials: true
max-age: 1800
# Ribbon displayed on the top left-hand side of JHipster applications
ribbon:
# Comma-separated list of profiles that display a ribbon
display-on-active-profiles: dev
Application-specific properties
Your generated application can also have its own Spring Boot properties. This is highly recommended, as it allows type-safe configuration of the application, as well as auto-completion and documentation within an IDE.
JHipster has generated a ApplicationProperties
class in the config
package, which is already preconfigured, and it is already documented at the bottom the application.yml
, application-dev.yml
and application-prod.yml
files. All you need to do is code your own specific properties.