How to read variable or concatenate one property in @Value annotation of spring boot












1















I have one POJO class which read properties from application.yaml file in spring boot. Here I need to set default value to groupId(to get when not given) based on combination of topic value and another string.



private String topic;

@Value("${topic}_test")
private String groupId;


I tried this but getting error as




Could not resolve placeholder 'topic' in value "${topic}_test




I create a variable and tried to access it in @Value but failed.
Please provide any suggestion to access this










share|improve this question

























  • Do you have @ConfigurationProperties at class? For more info see e.g. baeldung.com/configuration-properties-in-spring-boot

    – h0nzan
    Nov 21 '18 at 21:36











  • Yes i have given that annotation

    – esha ingle
    Nov 22 '18 at 4:39
















1















I have one POJO class which read properties from application.yaml file in spring boot. Here I need to set default value to groupId(to get when not given) based on combination of topic value and another string.



private String topic;

@Value("${topic}_test")
private String groupId;


I tried this but getting error as




Could not resolve placeholder 'topic' in value "${topic}_test




I create a variable and tried to access it in @Value but failed.
Please provide any suggestion to access this










share|improve this question

























  • Do you have @ConfigurationProperties at class? For more info see e.g. baeldung.com/configuration-properties-in-spring-boot

    – h0nzan
    Nov 21 '18 at 21:36











  • Yes i have given that annotation

    – esha ingle
    Nov 22 '18 at 4:39














1












1








1








I have one POJO class which read properties from application.yaml file in spring boot. Here I need to set default value to groupId(to get when not given) based on combination of topic value and another string.



private String topic;

@Value("${topic}_test")
private String groupId;


I tried this but getting error as




Could not resolve placeholder 'topic' in value "${topic}_test




I create a variable and tried to access it in @Value but failed.
Please provide any suggestion to access this










share|improve this question
















I have one POJO class which read properties from application.yaml file in spring boot. Here I need to set default value to groupId(to get when not given) based on combination of topic value and another string.



private String topic;

@Value("${topic}_test")
private String groupId;


I tried this but getting error as




Could not resolve placeholder 'topic' in value "${topic}_test




I create a variable and tried to access it in @Value but failed.
Please provide any suggestion to access this







spring-boot annotations






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 21 '18 at 13:41









Alien

5,47331127




5,47331127










asked Nov 21 '18 at 13:34









esha ingleesha ingle

163




163













  • Do you have @ConfigurationProperties at class? For more info see e.g. baeldung.com/configuration-properties-in-spring-boot

    – h0nzan
    Nov 21 '18 at 21:36











  • Yes i have given that annotation

    – esha ingle
    Nov 22 '18 at 4:39



















  • Do you have @ConfigurationProperties at class? For more info see e.g. baeldung.com/configuration-properties-in-spring-boot

    – h0nzan
    Nov 21 '18 at 21:36











  • Yes i have given that annotation

    – esha ingle
    Nov 22 '18 at 4:39

















Do you have @ConfigurationProperties at class? For more info see e.g. baeldung.com/configuration-properties-in-spring-boot

– h0nzan
Nov 21 '18 at 21:36





Do you have @ConfigurationProperties at class? For more info see e.g. baeldung.com/configuration-properties-in-spring-boot

– h0nzan
Nov 21 '18 at 21:36













Yes i have given that annotation

– esha ingle
Nov 22 '18 at 4:39





Yes i have given that annotation

– esha ingle
Nov 22 '18 at 4:39












1 Answer
1






active

oldest

votes


















1














Default value



Let's say you have a property like this in your application.yml file



topic: myFavoriteTopic


The code below will assign the value "myFavoriteTopic" to variable groupId if Spring is able to load the property with key topic from application.yml. If it's not, it will assign the default value "my default topic".



@Value("${topic:my default topic}")
private String groupId;


To set null as the default value, use:



@Value("${topic:#{null}}")


To use an empty String as the default value, use:



@Value("${topic:}")


Get key name from a variable



In your code snippet you have a String topic variable. For the Spring framework, this variable is not used in the property value retrieval. When you do @Value("${topic}"), "topic" is the name of the key that Spring will look for in application.yml. The name of the key cannot be determined at runtime based on the value of a Java variable. The reason is that properties can be loaded before the class code executes.



_test suffix



Also in your code snippet, you use @Value("${topic}_test"). What Spring does in this case is to concatenate "_test" to the value retrieved for property key topic. In my first example, groupId would be assigned "myFavoriteTopic_test".






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53413234%2fhow-to-read-variable-or-concatenate-one-property-in-value-annotation-of-spring%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    Default value



    Let's say you have a property like this in your application.yml file



    topic: myFavoriteTopic


    The code below will assign the value "myFavoriteTopic" to variable groupId if Spring is able to load the property with key topic from application.yml. If it's not, it will assign the default value "my default topic".



    @Value("${topic:my default topic}")
    private String groupId;


    To set null as the default value, use:



    @Value("${topic:#{null}}")


    To use an empty String as the default value, use:



    @Value("${topic:}")


    Get key name from a variable



    In your code snippet you have a String topic variable. For the Spring framework, this variable is not used in the property value retrieval. When you do @Value("${topic}"), "topic" is the name of the key that Spring will look for in application.yml. The name of the key cannot be determined at runtime based on the value of a Java variable. The reason is that properties can be loaded before the class code executes.



    _test suffix



    Also in your code snippet, you use @Value("${topic}_test"). What Spring does in this case is to concatenate "_test" to the value retrieved for property key topic. In my first example, groupId would be assigned "myFavoriteTopic_test".






    share|improve this answer




























      1














      Default value



      Let's say you have a property like this in your application.yml file



      topic: myFavoriteTopic


      The code below will assign the value "myFavoriteTopic" to variable groupId if Spring is able to load the property with key topic from application.yml. If it's not, it will assign the default value "my default topic".



      @Value("${topic:my default topic}")
      private String groupId;


      To set null as the default value, use:



      @Value("${topic:#{null}}")


      To use an empty String as the default value, use:



      @Value("${topic:}")


      Get key name from a variable



      In your code snippet you have a String topic variable. For the Spring framework, this variable is not used in the property value retrieval. When you do @Value("${topic}"), "topic" is the name of the key that Spring will look for in application.yml. The name of the key cannot be determined at runtime based on the value of a Java variable. The reason is that properties can be loaded before the class code executes.



      _test suffix



      Also in your code snippet, you use @Value("${topic}_test"). What Spring does in this case is to concatenate "_test" to the value retrieved for property key topic. In my first example, groupId would be assigned "myFavoriteTopic_test".






      share|improve this answer


























        1












        1








        1







        Default value



        Let's say you have a property like this in your application.yml file



        topic: myFavoriteTopic


        The code below will assign the value "myFavoriteTopic" to variable groupId if Spring is able to load the property with key topic from application.yml. If it's not, it will assign the default value "my default topic".



        @Value("${topic:my default topic}")
        private String groupId;


        To set null as the default value, use:



        @Value("${topic:#{null}}")


        To use an empty String as the default value, use:



        @Value("${topic:}")


        Get key name from a variable



        In your code snippet you have a String topic variable. For the Spring framework, this variable is not used in the property value retrieval. When you do @Value("${topic}"), "topic" is the name of the key that Spring will look for in application.yml. The name of the key cannot be determined at runtime based on the value of a Java variable. The reason is that properties can be loaded before the class code executes.



        _test suffix



        Also in your code snippet, you use @Value("${topic}_test"). What Spring does in this case is to concatenate "_test" to the value retrieved for property key topic. In my first example, groupId would be assigned "myFavoriteTopic_test".






        share|improve this answer













        Default value



        Let's say you have a property like this in your application.yml file



        topic: myFavoriteTopic


        The code below will assign the value "myFavoriteTopic" to variable groupId if Spring is able to load the property with key topic from application.yml. If it's not, it will assign the default value "my default topic".



        @Value("${topic:my default topic}")
        private String groupId;


        To set null as the default value, use:



        @Value("${topic:#{null}}")


        To use an empty String as the default value, use:



        @Value("${topic:}")


        Get key name from a variable



        In your code snippet you have a String topic variable. For the Spring framework, this variable is not used in the property value retrieval. When you do @Value("${topic}"), "topic" is the name of the key that Spring will look for in application.yml. The name of the key cannot be determined at runtime based on the value of a Java variable. The reason is that properties can be loaded before the class code executes.



        _test suffix



        Also in your code snippet, you use @Value("${topic}_test"). What Spring does in this case is to concatenate "_test" to the value retrieved for property key topic. In my first example, groupId would be assigned "myFavoriteTopic_test".







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Feb 27 at 18:11









        Paulo MersonPaulo Merson

        5,53443338




        5,53443338
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53413234%2fhow-to-read-variable-or-concatenate-one-property-in-value-annotation-of-spring%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Guess what letter conforming each word

            Port of Spain

            Run scheduled task as local user group (not BUILTIN)