Yay yapılandırma özellikleri yinelemeli türü

oy
1

Ben bağlı listesine benzer şekilde yapılandırılmış bir özyinelemeli sınıf olan yapılandırma özellikleri sınıfı oluşturmak çalışıyorum. Ben Bahar önyükleme 2.0.6.RELEASE kullanıyorum ve sınıf kullanılarak autowired ediliyor @EnableConfigurationProperties({EnginealConfig.class}).

Ben yaşıyorum sorun tek bir ilk seviye, test nesnesine bağlı olacaktır x.testset olsun asla.

Aşağıdaki application.properties dosyası kullanma:

engineal.x.value: Test1
engineal.x.test.value: Test2
engineal.x.test.test.value: Test3

Ve aşağıdaki yapılandırma özellikleri sınıfı:

@ConfigurationProperties(prefix = engineal)
public class EnginealConfig {

    static class Test {

        private String value;
        private Test test;

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }

        public Test getTest() {
            return test;
        }

        public void setTest(Test test) {
            this.test = test;
        }

        @Override
        public String toString() {
            return Test{ +
                    value=' + value + '\'' +
                    , test= + test +
                    '}';
        }
    }

    private Test x;

    public Test getX() {
        return x;
    }

    public void setX(Test x) {
        this.x = x;
    }

    @Override
    public String toString() {
        return EnginealConfig{ +
                x= + x +
                '}';
    }
}

Nesne yazdırılacaktır EnginealConfig{x=Test{value='Test1', test=null}}. Maalesef özyineleme çalışmıyor.

Oyalanmayı bu işe almak için farklı şeyler denemeye sonra gelen EnginealConfig # WhichAirline değişen çalıştı private Test test;etmek private List<Test> test;Alıcı ve ayarlayıcıların birlikte. Sonra bir eleman ile listelerini kullanarak, bu tekrarlama çalışır.

Aşağıdaki application.properties List<Test>değişikliği:

engineal.x.value: Test1
engineal.x.test[0].value: Test2
engineal.x.test[0].test[0].value: Test3

çıkış olacak EnginealConfig{x=Test{value='Test1', test=[Test{value='Test2', test=[Test{value='Test3', test=null}]}]}}. Sonra kullanarak bir sonraki eleman erişebilirler test.get(0).

özyineleme özyinelemeli tip bir koleksiyonunda yalnızca desteklenir sanki Öyle görünüyor.

Bu geçici çözüm Tamam olsa da, bunu yapmanın ilk yolu kullanmayı tercih ediyorum. / Sınıfları bir koleksiyon gerek kalmadan desteklenmelidir özyinelemeli gerektiğini musunuz? Yardımın için teşekkürler!

Oluştur 20/10/2018 saat 14:09
kaynak kullanıcı
Diğer dillerde...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more