Properties
Introducción
Se pueden especificar varias propiedades dentro del archivo application.properties
, dentro del archivo application.yml
o como interruptores de línea de comandos. Este documento proporciona una lista de propiedades comunes de AWE y referencias a las clases subyacentes que las consumen.
ℹ️ Los valores de las propiedades pueden provenir de archivos jar adicionales en el classpath, por lo que no se debería considerar esta como una lista exhaustiva. También puede definir sus propias propiedades.
⚠️ Este archivo de muestra solo está pensado como una guía. No copie y pegue todo el contenido en su aplicación. Más bien, elija sólo las propiedades que usted necesite.
Valor de la propiedad de codificación
Hay una forma de almacenar propiedades codificadas (como contraseñas) en un archivo de propiedades. Hay que desplegar la aplicación, y acceder a Configuración -> Seguridad -> Encriptación
, rellenar el criterio de texto con la contraseña y pulsar el botón Encriptar
. El campo Propiedad cifrada
es el valor de la contraseña codificada.
Una vez codificado, solo es necesario ponerlo en cualquiera de los archivos de propiedades y usarlo:
my.encoded.password=ENC(Pit1Q1bNt3uNQpZbldKbLg==)
ℹ️ La clave maestra utilizada para codificar las propiedades es la propiedad
security.master.key
del archivosecurity.properties
. Puede ser sobrescrito en su propio archivoapplication.properties
.
⚠️ El campo de clave de
Clave de encriptación
en la pantallaEncriptación
le permite generar las propiedades codificadas con otras contraseñas, pero no se olvide que las propiedades codificadas con una clave de encriptación y la seguridadsecurity.master.key
deben coincidir para ser decodificado con éxito.
Propiedades básicas
Definidas en el archivo config/base.properties
. Estas son las propiedades básicas de configuración de la aplicación.
################################################
# Application data
################################################
# Base encoding for all files
application.encoding=UTF-8
# Application name
application.name=AWE (Almis Web Engine)
# Application default theme
application.theme=sky
# Application acronym (in lowercase)
application.acronym=awe
# Application version
application.version=4.0.2
################################################
# Global Paths
# (@ means relative path to app base path)
################################################
application.base.path=/${application.acronym}/
application.paths.application=application/
application.paths.global=/global/
application.paths.locale=/locale/
application.paths.screen=/screen/
application.paths.profile=/profile/
application.paths.menu=/menu/
application.paths.templates=templates/
application.paths.templates.angular=angular/
application.paths.tag=tags/
application.paths.tag.angular=${paths.tag}angular/
application.paths.server=./
application.paths.images=images/
application.paths.reports=@reports/
application.paths.reports.historic=@historicReports/
application.paths.jrx=/jrx/
application.paths.temp=/tmp/
################################################
# Application Images
################################################
# Home screen logo
application.images.startup.logo=../../images/logo/logo.svg
# Home screen background
application.images.startup.background=../../images/background/signin-bg-1.jpg
# Navigation bar logo
application.images.navbar.logo=../../images/logo/logo-nabvar.svg
################################################
# Application Icons
################################################
# Favicon
application.icon.favicon=${application.paths.images}icon/favicon.png
# Apple icon 57x57
application.icon.phone=${application.paths.images}icon/favicon.png
# Apple icon 114x114
application.icon.tablet=${application.paths.images}icon/favicon.png
################################################
# Application parameters
################################################
# Default action parameter value
application.parameter.screen=screen
# Default frame parameter name
application.parameter.frame=frame
# Token variable
application.parameter.token=t
# Connection id
application.parameter.comet.id=s
# Default address parameter
application.parameter.address=address
# Default view parameter
application.parameter.view=view
# Default component parameter name
application.parameter.component=component
# Preload screens on startup
application.parameter.preload.screens=true
################################################
# Screen configuration
################################################
# Home screen name
screen.configuration.home=home
# Change password screen
screen.configuration.change.password=/screen/change_password
# Information screen
screen.configuration.information=information
# Screen access base
screen.configuration.base=screen
################################################
# Screen parameters
################################################
# User parameter
screen.parameter.username=cod_usr
# Password parameter
screen.parameter.password=pwd_usr
################################################
# Language
################################################
# Language
language.default=en
# Available languages
language.list=en,es,fr
################################################
# Print
################################################
# Show all print options
print.show.options=true
################################################
# Debug and log (Javascript)
################################################
# Action Stack Miliseconds to display: Turn off setting as 0
client.action.stack=0
# Javascript debug level (DEBUG, INFO, WARNING, ERROR)
client.debug.level=INFO
################################################
# Log (Server)
################################################
# Log name parameter
application.log.name=name
# Log level parameter
application.log.level=level
################################################
# Connection protocols
################################################
# Connection main protocol [AJAX|COMET]
connection.protocol=COMET
# Comet main protocol (default: 'websocket')
# [polling, long-polling, streaming, jsonp and websocket]
connection.transport=websocket
# Comet fallback (backup) protocol (default: 'streaming')
# [polling, long-polling, streaming, jsonp and websocket]
connection.backup=streaming
# Connection timeout (should be lower than tomcat timeout)
connection.timeout=60000000
################################################
# Application Defaults
################################################
# Rows per page (Set to 0 to avoid pagination)
application.data.rowsPerPage=30
# Pixels per char in grids
application.data.pixelsPerCharacter=8
# Empty computed values if one of the wildcards are empty
application.data.set.computed.empty.if.null=true
# Suggest timeout in milliseconds
application.suggest.timeout=300
# Default component size (sm/md/lg)
application.default.component.size=sm
# Reload current screen
application.reload.current.screen=false
# Loading timeout
application.screen.load.timeout=10000
################################################
# File Upload
################################################
# Upload identifier
file.upload.identifier=u
# Download identifier
file.download.identifier=d
# Path for file uploads (Relative to application.base.path starts with @)
file.upload.path=@upload/
# Max size of files (in MB)
file.upload.max.size=500
# Max elements per folder
file.upload.max.files.folder=1000
################################################
# Tooltip timeouts
################################################
# Timeout for ok messages
tooltip.timeout.ok=2000
# Timeout for error messages
tooltip.timeout.error=0
# Timeout for warning messages
tooltip.timeout.warning=4000
# Timeout for info messages
tooltip.timeout.info=0
# Timeout for validation messages
tooltip.timeout.validation=2000
# Timeout for help messages
tooltip.timeout.help=5000
# Timeout for chat messages
tooltip.timeout.chat=0
################################################
# Jms configuration properties
################################################
# JMS Enabled
awe.jms.enable=false
# Default Jms Service timeOut (in milliseconds)
awe.jms.service.timeout=10000
# Default Jms Service timeToLive
awe.jms.message.time.to.live=0
################################################
# REST configuration properties
################################################
# Connection timeout
rest.connection.timeout=5
# Request timeout
rest.request.timeout=5
################################################
# Logger properties
################################################
# Base paths where logs will be defined
application.log.base.path=${user.home}/${project.artifactId}/logs/${project.version}
# Default level for custom user file logs
application.log.users.level=info
# Flag to activate custom user file logs (true | false)
application.log.users.enabled=true
# Flag to build log path within system user home directory (true | false)
application.log.users.home=false
################################################
# Chart properties
################################################
highcharts.server.url=http://export.highcharts.com
Propiedades de módulos
Definidas en el archivo config/library.properties
. Aquí puede definir el comportamiento de capa de la aplicación (qué módulo está definido en qué lugar).
################################################
# Utilities list
################################################
modules.list=app,modn,...,mod1,awe
modules.prefix=module.
################################################
# AWE Paths
################################################
# Awe module (all awe xml files lie
# under application/awe/)
module.awe=awe
################################################
# Module 1 Paths
################################################
# Module acronym (all module xml files must lie
# under application/${module.mod1}/)
module.mod1=mod1
...=
################################################
# Module n Paths
################################################
# Module acronym (all module xml files must lie
# under application/${module.modn}/)
module.modn=modn
################################################
# APP Paths
################################################
# Application acronym (all application xml files
# must lie under application/${module.app}/)
module.app=app
module.app.documents=static/docs/${module.app}/
ℹ️ El primer módulo debe ser siempre app, el último módulo debe ser siempre awe.
💾 Este archivo debe ser sobrescrito en la aplicación final.
Propiedades de correo electrónico
Definidas en el archivo config/email.properties
. Aquí se puede definir la configuración del servidor de correo.
################################################
# Mail server properties
################################################
# Localhost for smtp server
awe.mail.enabled=true
# Mail JNDI name
awe.mail.jndi.name=
# Localhost for smtp server
awe.mail.localhost=localhost
# Flag to specify if authentication is needed
awe.mail.auth=true
# Email server host
awe.mail.host=email.server.com
# Email server port
awe.mail.port=25
# Email server username
awe.mail.user=
# Email server password
awe.mail.pass=
# Flag to specify the usage of SSL/TLS protocol
awe.mail.ssl=
# Flag to specify the usage of STARTTLS protocol
awe.mail.tls=
# Execute email in debug mode
awe.mail.debug=true
ℹ️ Si aparece un error como
No se pudo conectar a SMTP host: xxxxx:xx (javax.net.ssl. SLException: Mensaje SSL no reconocido, conexión de texto plano?
, significa que necesitamos agregar en el keystore del certificado de Java la autoridad de certificación que el servidor de correo electrónico está utilizando.
Propiedades numéricas
Definidas en el archivo config/numeric.properties
. Aquí puede definir el comportamiento de los formatos numéricos de la aplicación
################################################
# Default configuration
################################################
# Numeric format for field pattern value
numeric.pattern.formatted=###,###.####
# Numeric format for field pattern value (plain, without thousand separators)
numeric.pattern.unformatted=######.####
# Number format separator for input numeric
# - eur: EUROPEAN FORMAT [10.000.000,00]
# - ame: AMERICAN FORMAT [10,000,000.00]
# - eur_no: EUROPEAN NO THOUSANDS [10000000,00]
# - ame_no: AMERICAN NO THOUSANDS [10000000.00]
numeric.format=eur
################################################
# Numeric configuration
################################################
# Minimum value
numeric.min.value=-9999999999.99
# Maximum value
numeric.max.value=9999999999.99
# Padding with zeros
numeric.padding=false
# Rounding type
# - S: Round-Half-Up Symmetric (default)
# - A: Round-Half-Up Asymmetric
# - s: Round-Half-Down Symmetric (lower case s)
# - a: Round-Half-Down Asymmetric (lower case a)
# - B: Round-Half-Even "Bankers Rounding"
# - U: Round Up "Round-Away-From-Zero"
# - D: Round Down "Round-Toward-Zero" - same as truncate
# - C: Round to Ceiling "Toward Positive Infinity"
# - F: Round to Floor "Toward Negative Infinity"
numeric.round.type=S
# Default decimal numbers
numeric.decimal.numbers=5
################################################
# Formatting configuration EUR
################################################
# Thousands separator
numeric.separator.thousand.eur=.
# Decimal separator
numeric.separator.decimal.eur=,
################################################
# Formatting configuration AME
################################################
# Thousands separator
numeric.separator.thousand.ame=,
# Decimal separator
numeric.separator.decimal.ame=.
################################################
# Formatting configuration EUR no thousands
################################################
# Thousands separator
numeric.separator.thousand.eur_no=
# Decimal separator
numeric.separator.decimal.eur_no=,
################################################
# Formatting configuration AME no thousands
################################################
# Thousands separator
numeric.separator.thousand.ame_no=
# Decimal separator
numeric.separator.decimal.ame_no=.
Propiedades de la base de datos
Definidas en el archivo config/database.properties
. Aquí se puede definir la conexión de base de datos
################################################
# Database
################################################
# Enable database
awe.database.enabled=false
# Database criterion name
awe.database.parameter.name=_database_
# Limit log size (0 to disable)
awe.database.limit.log.size=0
# Datasource
spring.datasource.jndi-name=
# Datasource server url
spring.datasource.url=
# Datasource username
spring.datasource.username=
# Datasource password
spring.datasource.password=
# Datasource driver
spring.datasource.driver-class-name=
# Datasource validation query
spring.datasource.validation-query=select 1 from ope
################################################
# Flybase migration tools
################################################
# Migration scripts prefix pattern
awe.database.migration.prefix=%s_V
# Migration repeatable scripts prefix pattern
awe.database.migration.repeatable.prefix=%s_R
# List of modules to migrate.
# - Add other modules if you need take its scripts
# - Ex: awe.database.migration-modules=AWE,SCHEDULER,APP
awe.database.migration-modules=AWE
# Scripts location. Takes into account the type of database from the vendor place holder
spring.flyway.locations=classpath:db/migration/{vendor}
################################################
# Audit properties
################################################
# Activate audit
awe.database.audit=true
# Audit date field
awe.database.audit.date=HISdat
# Audit user field
awe.database.audit.user=HISope
# Audit action (Insert, update, delete) field
awe.database.audit.action=HISact
# Time between audit operations
awe.database.audit.lag=100
################################################
# Batch maintain operation properties
################################################
# Number of batch operations to be launched at once
awe.database.batch.max=100
Propiedades de seguridad
Definidas en el archivo config/security.properties
. Aquí se pueden definir los comportamientos de seguridad de su aplicación.
################################################
# Security
################################################
# Password encryption variable
security.master.key=xxxxxxxxxxxxx
# Jasypt properties (for decrypting properties)
jasypt.encryptor.password=${security.master.key}
jasypt.encryptor.algorithm=PBEWithMD5AndDES
jasypt.encryptor.keyObtentionIterations=1000
jasypt.encryptor.poolSize=1
jasypt.encryptor.providerName=SunJCE
jasypt.encryptor.saltGeneratorClassname=org.jasypt.salt.RandomSaltGenerator
jasypt.encryptor.stringOutputType=base64
# Activate json encryption (0 - deactivated|1 - activated)
security.json.encryption=0
# Encrypted parameter list name
security.json.parameter=p
# Default restriction set (default should be the most restricted)
security.default.restriction=general
# Spring role prefix
security.role.prefix=ROLE_
# XML parser allowed paths
xml.parser.allowed.paths=java.*,com.almis.awe.model.entities.**
################################################
# Authentication
################################################
# Authentication mode (ldap | bbdd | in_memory | custom)
security.auth.mode=bbdd
################################################
# Custom authentication
################################################
# Provider class beans, separated by comma for multiple providers.
security.auth.custom.providers=
################################################
# Ldap Windows
################################################
# User login property name
security.auth.ldap.windows.user.property=sAMAccountName={0}
################################################
# Ldap Unix
################################################
# User login property name
security.auth.ldap.unix.user.property=uid={0}
################################################
# General ldap properties
################################################
# Enviroment Ldap (windows | unix)
security.auth.ldap=windows
# Ldap urls (ldap:// or ldaps://)
security.auth.ldap.url=
# Ldap user bind
security.auth.ldap.user.bind=
# Ldap password bind
security.auth.ldap.password.bind=
# Ldap Base DN of user
security.auth.ldap.basedn=
# Ldap connection time out
security.auth.ldap.timeout=5000
################################################
# Security request headers
################################################
# Avoid cross domain frame requests
security.headers.frameOptions.sameOrigin=true
# Allowed origins patterns when starting websocket connection
security.headers.allowedOriginsPatterns=*
Propiedades de la sesión
Definidas en el archivo config/session.properties
. Aquí se puede definir la gestión de sesiones.
################################################
# Session configuration
################################################
# Session timeout in seconds (30 min).
server.servlet.session.timeout=30m
################################################
# Session parameter list, separated by comma (,)
################################################
# Session parameters
session.parameters=module,site,database
################################################
# Session parameter value queries
################################################
# Queries to initialize session parameters
session.module.query=ModNamByOpeSel
session.site.query=SitNamByOpeSel
session.database.query=DbsAlsBySitModSel
###############################################
# Spring session
###############################################
# Spring session persistence source
#REDIS - ok
#MONGO - ok
#JDBC
#HAZELCAST
#NONE - ok
spring.session.store-type=NONE
# Session timeout in seconds (30 min)
server.session.timeout=1800
########### COOKIE CONFIGURATION ###############
# Session cookie name
session.cookie.name=AWESESSIONID
# Session cookie path
session.cookie.path=/
# Session cookie domain name regexp
session.cookie.domain.name.pattern=^.+?\.(\w+\.[a-z]+)$
########### REDIS CONFIGURATION ###############
# redis host
spring.redis.host=
# redis port
spring.redis.port=6379
# Sessions flush mode.
spring.session.redis.flush-mode=on-save
# Namespace for keys used to store sessions.
spring.session.redis.namespace=awesessions
########## HAZELCAST CONFIGURATION ############
# Sessions flush mode.
spring.session.hazelcast.flush-mode=on-save
# Name of the map used to store sessions.
spring.session.hazelcast.map-name=awe:session:sessions
############ JDBC CONFIGURATION ###############
# Create the required session tables on startup if necessary.
# Enabled automatically if the default table name is set or a custom schema is configured.
#spring.session.jdbc.initializer.enabled=
# Path to the SQL file to use to initialize the database schema.
spring.session.jdbc.schema=classpath:org/springframework/session/jdbc/schema-mysql.sql
# Name of database table used to store sessions.
spring.session.jdbc.table-name=AWE_SESSION
###############################################
# Session datasource configuration
###############################################
########## HAZELCAST CONFIGURATION ############
# The location of the configuration file to use to initialize Hazelcast.
#spring.hazelcast.config=classpath:config/hazelcast-default.xml
ℹ️ To know more about spring session configuration, visit Spring Appendix A
Propiedades de microservicios
Definidas en archivo config/microservices.properties
. Aquí se puede definir la configuración de los servidores de microservicios
# Microservices search endpoint
awe.microservices.endpoint=http://localhost:18083/api/
Propiedades de log
Definidas en el archivo log4j2-app.properties
. Aquí puede definir las propiedades del log
###############################################
# Log4j2 properties
###############################################
# Application log name
log.app=AWE
# Jasper log name
log.jasper=ADE
# Jms log name
log.jms=JMS
# Scheduler log name
log.scheduler=SCHEDULER
# Model log name
log.model=MODEL
# File extension for custom user file logs
log.ext=.log
# Path for app version
log.app.version=V4.0.0/
# Pattern layout
log.pattern.layout=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%t] - %msg%n
# File pattern for rolling
log.pattern.file=_%d{yyyy-MM-dd}-%i
# Charset
log.charset=UTF-8
# Size rolling policy
log.size.rolling=10 MB
# Date rolling policy (Number days)
log.date.rolling=1
# Max number files rolling backup
log.num.file.rolling=10
# Delete files if size exceeds more than this number
log.delete.if.size.exceeds=500 MB
# Delete files if days exceeds more than this number
log.delete.if.days.exceeds=15d
# Log folder
application.log.type=java
💾 Este archivo debe ser sobrescrito en la aplicación final.
Sobreescritura de propiedades
Se puede sobrescribir cualquier propiedad de awe framework agregándolo a su archivo application.properties
del proyecto.
Awe tiene el mismo orden de lectura de propiedades que Spring (1. Es la preferencia más alta).
- Propiedades de configuración global de Devtools en su directorio inicial (
~/.spring-boot-devtools.properties
cuando devtools está activo). - Anotaciones
@TestPropertySource
en sus pruebas. - Anotación
@SpringBootTest#properties
en sus pruebas. - Argumentos de línea de comandos.
- Propiedades de
SPRING_APPLICATION_JSON
(JSON embebido en una variable de entorno o en una propiedad de sistema) - Parámetros de inicio de
ServletConfig
. - Parámetros de inicio de
ServletContext
. - Atributos JNDI de
java:comp/env
. - Propiedades de Sistema de Java (
System.getProperties()
). - Variables de entorno del SO.
- Un
RandomValuePropertySource
que solo tiene propiedades enrandom.*.
- Propiedades de aplicación específicas del perfil fuera de su jar empaquetado (
application-{profile}.properties
y variantes YAML) - Propiedades de aplicación específicas del perfil empaquetadas dentro de su jar (
application-{profile}.properties
y variantes YAML) - Propiedades de aplicación fuera de su jar empaquetado (
application.properties
y variantes YAML). - Propiedades de aplicación empaquetadas dentro de su jar (
application.properties
y variantes YAML). - Anotaciones
@PropertySource
en sus clases@Configuration
. - Propiedades predeterminadas (especificadas usando
SpringApplication.setDefaultProperties
).
Configuración externa
Si necesita cargar la configuración desde un archivo externo, debe considerar:
AWE como SpringApplication
cargará propiedades de los archivos application.properties en las siguientes ubicaciones y los añadirá al entorno Spring
:
Un subdirectorio /config
del directorio actual.
- El directorio actual
- Un paquete /config en el classpath
- La raíz de classpath
También, puedes establecer spring.config.location
propiedad de entorno el comando de ejecución.
java -jar myAweProject.jar --spring.config.location=file:/external_path/specific.properties
ℹ️ Puedes encontrar más información al respecto en la documentación oficial de Spring .