java - @Value in spring boot is not injecting value from application.properties -


i using easyrules api in code. following rule class accesses double value application.properties file present in src/main/resources:

@rule(name = "over-weight rule") // indicate class rule @propertysource("/application.properties") public class overweightrule {      /**      * user input represents data      * rule operate on.     */     private metric metric;      @autowired     @qualifier("alertservicedao")     private alertservice alertservice;      @value("${base.weight}")     private double baseweight;      public overweightrule(metric metric) {         this.metric = metric;     }      @condition     public boolean isoverweight() {         // rule should applied if         // weight in metric object shoots 10% on base weight.         if(metric.getweight() > (baseweight + (0.1 * baseweight))) return true;         return false;     }      @action     public void createandstoreoverweightalert() {         // when rule conditions satisfied,         // alert created.         alert alert = new alert();         alert.setalerttype(alert.alerttype.over_weight);         alert.setweight(metric.getweight());         alert.settimestamp(metric.gettimestamp());         alertservice.createalert(alert);     } } 

the value in baseweight 0.0 whereas have set 150.0 in properties file. read spring boot automatically reads values application.properties file present in src/main/resources no need use @propertysource("/path properties file"). still added @propertysource annotation result same. wrong in code? not want add @configuration class because want keep class rule class defined easy rules framework.

one alternative declare @component , removes @propertysource , keep @value("${base.weight}")

@rule(name = "over-weight rule") // indicate class rule @component("myoverweightrule") public class overweightrule { 

when create rulesenginefactorybean can autowire myoverweightrule:

@bean @autowired rulesenginefactorybean rulesenginefactorybean(overweightrule myoverweightrule){     rulesenginefactorybean rules = new rulesenginefactorybean();     rules.setrules(arrays.aslist(myoverweightrule));     return rules; } 

and call firerules getting rulesenginefactorybean

        rulesengine rulesengine                 = (rulesengine) ctx.getbean("rulesenginefactorybean");         rulesengine.firerules(); 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -