22 Aralık 2019 Pazar

SpringContext @Profile Anotasyonu

Giriş
Şu satırı dahil ederiz.
import org.springframework.context.annotation.Profile;
Açıklaması şöyle. Yani profil etkin ise bean'ler yaratılır.
If we want Spring to use the @Component class or the @Bean method only when a specific profile is active, we can mark it with  @Profile. We can configure the name of the profile with the value argument of the annotation:
Bir başka açıklama şöyle
Any @Component, @Configuration or @ConfigurationProperties can be marked with @Profile to limit when it is loaded.
Açıklaması şöyle
You can use an exclamation mark prefix for the profile which means all other profiles except the one that is mentioned. @Profile("!dev")
Örnek
Şöyle yaparız
@Component
@Profile("!dev") 
public class ProductsComponent {      
    // ...  
}
Ö
value Alanı
Örnek
Şöyle yaparız. Aynı bean'i yaratan metod isimleri farklı olmalı!
@Configuration
public class ConfigurationUtil {

  @Bean
  @Profile("apple")
  Fruit apple(){
    return new Apple();
  }

  @Bean
  @Profile("banana")
  Fruit banana(){
    return new Banana();
  }

}
Örnek - SpEL
Şöyle yaparız.
@Service
public class BackgroundTaskService {

  @PostConstruct
  @Profile("!test")
  public void startTask() {
    // ...
  }
}
Örnek - SpEL
Şöyle yaparız. Burada profile ve !profile kullanımına dikkat.
@Configuration
class MyConfig {
  @Profile("profile")
  @Bean
  MyBean myBean(MyBeanProperties properties) {
    return new MyBean(properties);
  }

  @Profile("!profile")
  @Bean
  // note different method name
  MyBean otherBean(MyBeanProperties properties, AdditionalProperties addProps) {
    MyBean result = new MyBean(properties);
    result.addAdditionalProperties(addProps);
    return result;
  }
}
Örnek - SpEL
Birden fazla değer vermek için şöyle yaparız.
@Profile({"devel", "test"})

Hiç yorum yok:

Yorum Gönder