Estoy usando la aplicación de microservicios jhipster para mi desarrollo. Basado en la documentación de jhipster para agregar aplicaciones específicas aquí: application-dev.yml y ApplicationProperties.java
Hice esto agregando esto
application: mycom: sgADIpAddress: 172.xxxxxy esta es mi clase applicationconfig
package com.mbb.ias.config; import org.springframework.boot.context.properties.ConfigurationProperties; /** * Properties specific to JHipster. * * <p> * Properties are configured in the application.yml file. * </p> */ @ConfigurationProperties(prefix = "application", ignoreUnknownFields = false) public class ApplicationProperties { private final Mycom mycom= new Mycom(); public Mycom getMycom () { return mycom; } public static class Mycom { String sgADIpAddress =""; public String getSgADIpAddress() { return sgADIpAddress; } public void setSgADIpAddress(String sgADIpAddress) { this.sgADIpAddress = sgADIpAddress; } }}
He llamado a esto usando las mismas propiedades jhipster que son
@Inject private ApplicationProperties applicationProperties;en las clases que necesitan esta dirección IP de AD.
arrojará un valor nulo
java.lang.NumberFormatException: null at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source)por favor ayúdenme chicos, SIT va a comenzar, necesito crear un perfil para maven build como jhipster creado
Tengo el mismo problema y pasé un par de horas para resolverlo... Jhipster tiene su clase de propiedad preconfigurada para que los usuarios puedan personalizar sus propias propiedades:
Cita del sitio web de Jhipster:
Su aplicación generada también puede tener sus propias propiedades de Spring Boot. Esto es muy recomendable, ya que permite la configuración con seguridad de tipos de la aplicación, así como el autocompletado y la documentación dentro de un IDE.
JHipster ha generado una clase ApplicationProperties en el paquete de configuración, que ya está preconfigurado, y ya está documentado en la parte inferior de los archivos application.yml, application-dev.yml y application-prod.yml. Todo lo que necesita hacer es codificar sus propias propiedades específicas.
En mi caso, he configurado las propiedades en todos los archivos yml.
application: redis: host: vnode1 pool: max-active: 8 max-idle: 8 max-wait: -1 min-idle: 0 port: 6379En la clase ApplicationProperties:
@ConfigurationProperties(prefix = "application", ignoreUnknownFields = false) public class ApplicationProperties { public final Redis redis = new Redis(); public Redis getRedis() { return redis; } public static class Redis { private String host = "127.0.0.1"; private int port = 0; public String getHost() { return host; } public void setHost(String host) { this.host = host; } public int getPort() { return port; } public void setPort(int port) { this.port = port; } private Pool pool = new Pool(); public void setPool(Pool pool) { this.pool = pool; } public Pool getPool() { return this.pool; } public static class Pool { private int maxActive = 8; private int maxWait = -1; private int maxIdle = 8; private int minIdle = 0; public int getMaxIdle() { return maxIdle; } public void setMaxIdle(int maxIdle) { this.maxIdle = maxIdle; } public void setMaxActive(int maxActive) { this.maxActive = maxActive; } public int getMaxActive() { return maxActive; } public int getMinIdle() { return minIdle; } public void setMinIdle(int minIdle) { this.minIdle = minIdle; } public int getMaxWait() { return maxWait; } public void setMaxWait(int maxWait) { this.maxWait = maxWait; } } } }Entonces lo uso como:
private final ApplicationProperties.Redis redis; public RedisConfiguration(ApplicationProperties applicationProperties){ redis = applicationProperties.getRedis(); } Por ejemplo, use max-wait y host :
this.redis.getPool().getMaxWait(); this.redis.getHost();refiriéndose a este hilo La anotación de primavera @Inject no funciona
elimino mi nuevo operador para todas las clases que está llamando a mi applicationproperties.java
@Service public class ADAuthenticatorService { private static final Logger log = LoggerFactory.getLogger(ADAuthenticatorService.class); private final static long DIFF_NET_JAVA_FOR_DATE_AND_TIMES = 11644473600000L; @Inject ADContext adContext; /** * AD authentication * * @param UserID, * AD User ID * @param Password, * AD Password * @return ADProfile */ @Inject ApplicationProperties applicationProperties; public ADProfile authenticate(String UserID, String Password) throws Exception { ADContext context = adContext.getDefaultContext(applicationProperties); return authenticate(context, UserID, Password); }en mi ADContext puse @component en la parte superior de mi nombre de clase y agregué la anotación @Sevice en la parte superior de ADAuthenticatorService
entonces mi
@Inject ApplicationProperties applicationProperties;está funcionando perfectamente
solo publico esta respuesta para que cualquier novato como yo en el exterior pueda beneficiarse de esto jajaja