Skip to content
Advertisement

@Value not getting the value from application.properties

im trying to get a value from the application.properties in a Spring boot app.

The class is defined with the tag @Component, I already tried @Service too, and with @PropertySource(“classpath:application.properties”) and without the @PropertySource but in any case they get the value.

   @Component
   @PropertySource("application.properties")
    public class TerraformOutput implements IPatternOutput {

    @Value(value = "${terraformPath}")
    private String pathTerraform;
}

The interface is defined like this

@Component
public interface IPatternOutput extends IOutput {
    
    String createFile(TerraformTemplate t);
}

And the superior interface

@Component
public interface IOutput {

    void deleteFile(String path);

}

In any case I tried without implementing the interface but it didnĀ“t get it in any case

The application.properties is defined in this way:

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/dbcloudbatch?createDatabaseIfNotExist=true&autoReconnect=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=admin
spring.datasource.driver-class-name =com.mysql.jdbc.Driver
#spring.jpa.show-sql: true
terraformPath=C:/terraform-files/

Thanks in advance.

Advertisement

Answer

Usually @PropertySource annotation goes together with @Configuration annotation for your configuration class. It works for entire project. So, place it with your configuration and then in any class that is annotated as @Component, @Service @Controller etc you can use @Value annotation exactly the way you showed in your code. Here is a good article on the issue: Properties with Spring and Spring Boot

Advertisement