Spring Boot კონფიგურაციას აგარეგებს, ისე რომ ერთი და იგივე jar ყველა გარემოში მუშაობს. პარამეტრებს application.yml-ში (ან .properties-ში) ათავსებ, კოდში კითხულობ და ქცევას თითო გარემოზე profiles-ით ცვლი.
application.yml და @Value
Spring Boot კონფიგურაციას აგარეგებს, ისე რომ ერთი და იგივე jar ყველა გარემოში მუშაობს. პარამეტრებს application.yml-ში (ან .properties-ში) ათავსებ, კოდში კითხულობ და ქცევას თითო გარემოზე profiles-ით ცვლი.
@Component
public class SearchService {
// Inject a single property; :20 is the fallback if it is missing.
@Value("${app.page-size:20}")
private int pageSize;
}
ერთ-ორ მნიშვნელობაზე მეტისთვის @Value-ის მიმოფანტვის ნაცვლად ტიპიზირებული ობიექტი მიაბი:
@Component
@ConfigurationProperties(prefix = "app") // binds app.* into these fields
public class AppProps {
private int pageSize;
private Map<String, Boolean> featureFlags;
// getters/setters — Boot relaxed-binds page-size -> pageSize
}
ეს გაძლევს ტიპების უსაფრთხოებას, IDE-ს ავტოშევსებას და ვალიდაციას (დაამატე @Validated + constraints).
spring:
config:
activate:
on-profile: prod # only when 'prod' is active
server:
port: 80
ისეთი ფაილები, როგორიც application-dev.yml და application-prod.yml-ია, ბაზურის თავზე ეფინება. ერთი მათგანი გაააქტიურე --spring.profiles.active=prod-ით ან SPRING_PROFILES_ACTIVE env ცვლადით. პრიორიტეტის თანმიმდევრობას მნიშვნელობა აქვს: command-line არგუმენტები და გარემოს ცვლადები ფაილებს გადაფარავს, ამიტომ საიდუმლოები jar-ს გარეთ რჩება.
ინტერვიუერი ამოწმებს, შეგიძლია თუ არა ერთი არტეფაქტის მიწოდება dev/staging/prod-ზე ხელახლა აგების გარეშე. @ConfigurationProperties-ის ხსენება მიმოფანტული @Value-ის ნაცვლად და ის, რომ env ცვლადები ფაილებს გადაფარავს საიდუმლოებისთვის, აჩვენებს, რომ Boot აპები production-ში გაქვს გაშვებული და არა მხოლოდ ლოკალურად.
IT გასაუბრების კითხვების ბიბლიოთეკა დეტალური პასუხებით — Junior-დან Senior-მდე.
შემოწირულობა