archivo de propiedades se parece a esto:

url1=path_to_binary1
url2=path_to_binary2

Según este he intentado siguiente enfoque:

@Component
@EnableConfigurationProperties
public class ApplicationProperties {
    private Map<String, String> pathMapper;

    //get and set
}

y en otro componente I autowired ApplicationProperties:

@Autowired
private ApplicationProperties properties;         
      //inside some method:
      properties.getPathMapper().get(appName);

produce NullPointerException.

Cómo corregirlo?

actualización

He correcto de acuerdo user7757360 consejo:

@Component
@EnableConfigurationProperties
@ConfigurationProperties(prefix="app")
public class ApplicationProperties {

y propiedades de archivo:

app.url1=path_to_binary1
app.url2=path_to_binary2

Todavía no funciona

Actualización 2

@Component
@EnableConfigurationProperties
@ConfigurationProperties(prefix="app")
public class ApplicationProperties {
    private Map<String, String> app;

y dentro de application.properties:

app.url1=path_to_binary1
app.url2=path_to_binary2

Todavía no funciona

4 Comentarios

  1. 1

    NullPointerException es probablemente de vacío ApplicationProperties.

    Todas las propiedades personalizadas deben ser anotados @ConfigurationProperties(prefix="custom").
    Después de eso, en la clase principal (la clase con el método main () debe agregar @EnableConfigurationProperties(CustomProperties.class).
    Para autocompletar puede utilizar:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>

    Si utiliza @ConfigurationProperties sin prefijo que se utiliza sólo el nombre del campo. Nombre de campo en ti propiedades. En su caso path-mapper, junto específicos key y value. Ejemplo:

    path-mapper.key=value

    Recuerde que después de los cambios en sus propias propiedades que usted necesita para volver a cargar la aplicación. Ejemplo:

    https://github.com/kchrusciel/SpringPropertiesExample

    • Cuál es el prefijo ?
    • Usted puede usar el prefijo personalizado.pathMapper.valor=valor de mi, o @ConfigurationProperties(«») para pathMapper.valor=valor de mi. Estos valores deben ser agregados en la aplicación.propiedades.
    • por favor, lea el tema de la actualización. Se ve otra respuesta mismo con tus consejos
    • Utilice la aplicación.url1=path_to_binary1 pero el nombre de la variable es pathMapper
    • ¿Cómo debo usar?
    • ruta-mapper.valor=10
    • Permítanos continuar esta discusión en el chat.
    • prefijo y el nombre del campo debe ser el mismo?
    • Se puede proporcionar una respuesta precisa en que usted la respuesta?
    • Si utiliza @ConfigurationProperties sin prefijo. Usted debe utilizar: nombre de campo.clave = valor (clave y el valor como en el mapa)
    • tema actualizado, por favor, lea
    • Clon de este repo con el mapa. github.com/kchrusciel/SpringPropertiesExample
    • se puede extender por el mapa con varios valores?
    • Actualizado github.com/kchrusciel/SpringPropertiesExample

  2. 3

    sería de gran ayuda si usted puede dar una información más específica de ejemplo para el archivo de propiedades. Usted debe tener el mismo prefijo en el url1 y url2 y, a continuación, puede utilizar

    @ConfigurationProperties(prefix="my")

    como en


    my.pathMapper.url1=path_to_binary1
    my.pathMapper.url2=path_to_binary2

    @Component
    @EnableConfigurationProperties
    @ConfigurationProperties(prefix="my")
    public class ApplicationProperties {
        private Map<String, String> pathMapper;
    
        //get and set for pathMapper are important
    }

    ver más en https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-loading-yaml

    • pleasew leer el tema de la actualización
    • Donde escribir las propiedades de nombre de archivo?
    • basado en la actualización de su archivo de propiedades debe ser app.app.url1=path_to_binary1 app.app.url2=path_to_binary2 recomiendo el uso de un prefijo diferente
    • suponiendo que utilizar los valores predeterminados, spring-boot busca el nombre predeterminado application.properties así que no hay necesidad de escribir las propiedades de nombre de archivo en cualquier lugar. Sólo asegúrese de application.properties es en src/main/resources como se muestra en el ejemplo proporcionado por @kchrusciel
  3. 0

    Tiene el su.archivo de propiedades bajo src/main/resources y tiene como

    @Configuration
    @PropertySource("classpath:your.properties")
    public class SpringConfig(){}

    o la tienen como un PropertyPlaceholderConfigurer en su Primavera yourApplicationContext.xml.

    A continuación, utilice los valores de la propiedad como

    @Value("app.url1")
    String path_to_binary1;
    
    @Value("app.url2")
    String path_to_binary2;
    
    //...
    
    System.out.println(path_to_binary1+path_to_binary2);
  4. 0

    Hay dos cosas que usted necesita para alimentar mapa de propiedades de archivo. En primer lugar usted necesita para tener una clase que tiene la configuración y campos de destino para guardar los datos de un archivo de propiedades.

    @Configuration
    @PropertySource("classpath:myprops.properties")
    @ConfigurationProperties("props")
    @Component
    public class Properties{
       private Map<String,String> map = new HashMap<String,String>();
       //getter setter
    }

    En segundo lugar definir las propiedades del archivo de nombre myprops.propiedades con todas las propiedades como accesorios

    props.map.port = 443
    props.map.active = true
    props.map.user = aUser

Dejar respuesta

Please enter your comment!
Please enter your name here