26 Mart 2018 Pazartesi

SpringBoot @EnableConfigurationProperties Anotasyonu - Artık Kullanmaya Gerek Yok

Giriş
Şu satırı dahil ederiz.
import org.springframework.boot.context.properties.EnableConfigurationProperties;
Yeni Kodlar
Yeni SpringBoot için açıklama şöyle. Yani artık @EnableConfigurationProperties anotasyonunu kullanmaya gerek yok.
As, of Spring Boot 2.2, Spring finds and registers @ConfigurationProperties classes via classpath scanning. Therefore, there is no need to annotate such classes with @Component (and other meta-annotations like @Configuration) or even use the @EnableConfigurationProperties
Eski Kodlar
Eski kodlar için açıklaması şöyle.
The @EnableConfigurationProperties annotation is automatically applied to your project so that any beans annotated with @ConfigurationProperties will be configured from the Environment properties. The @ConfigurationProperties annotation won’t work unless you’ve enabled it by adding @EnableConfigurationProperties in one of your Spring configuration classes.
Yani alanlarına değer atanacak sınıf @ConfigurationProperties anotasyonuna sahiptir. Bu sınıfı bean yapmak için @EnableConfigurationProperties anotasyonu ile sınıf ismi belirtilir.

Örnek
Alanlarına değer atanacak sınıfı belirtmek için şöyle yaparız.
@SpringBootApplication
@EnableConfigurationProperties({FooSettings.class})
public class MyApplication {
  ...
}
Örnek
Ayarları okuyacak sınıfı belirtmek için şöyle yaparız.
@EnableConfigurationProperties(ServiceProperties.class)
Okuyan sınıfı kodlamak için şöyle yaparız.
@ConfigurationProperties("job")
@PropertySources({
  @PropertySource(value = "${ext.prop.dir}", ignoreResourceNotFound = true),
  @PropertySource(value = "classpath:application.properties",
                  ignoreResourceNotFound = true)
})

public class ServiceProperties {

  private String schema;
  ...
}
Örnek
SpringTest ile şöyle yaparız.
@RunWith(SpringRunner.class)
@EnableConfigurationProperties
@TestPropertySource("classpath:../classes/conf/animal.yml")
public class AnimalTest {
  ...
  
}
Bean için şöyle yaparız.
@Configuration
@ConfigurationProperties(prefix = "animal")
public class Animal {
  ...
}

Hiç yorum yok:

Yorum Gönder