Spring Boot configuration-কে বাইরে রাখে যাতে একই jar প্রতিটি environment-এ চলে। আপনি setting গুলো application.yml (বা .properties)-এ রাখেন, code-এ পড়েন, এবং profile দিয়ে environment-ভেদে আচরণ বদলান।
application.yml এবং @Value
Spring Boot configuration-কে বাইরে রাখে যাতে একই jar প্রতিটি environment-এ চলে। আপনি setting গুলো application.yml (বা .properties)-এ রাখেন, code-এ পড়েন, এবং profile দিয়ে environment-ভেদে আচরণ বদলান।
@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-এর বেশি যেকোনো কিছুর জন্য, @Value ছড়িয়ে না দিয়ে একটি typed object bind করুন:
@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
}
এটি আপনাকে type safety, IDE auto-complete, এবং validation দেয় (@Validated + constraint যোগ করুন)।
spring:
config:
activate:
on-profile: prod # only when 'prod' is active
server:
port: 80
application-dev.yml ও application-prod.yml-এর মতো file গুলো base-এর উপর যুক্ত হয়। --spring.profiles.active=prod বা SPRING_PROFILES_ACTIVE env var দিয়ে একটি সক্রিয় করুন। অগ্রাধিকারের ক্রম গুরুত্বপূর্ণ: command-line arg ও environment variable file-কে ছাপিয়ে যায়, তাই secret গুলো jar-এর বাইরে থাকে।
Interviewer যাচাই করছেন আপনি rebuild ছাড়াই dev/staging/prod জুড়ে একটিমাত্র artifact পাঠাতে পারেন কিনা। ছড়ানো @Value-এর বদলে @ConfigurationProperties, এবং secret-এর জন্য env-var-এর file-কে ছাপিয়ে যাওয়ার কথা উল্লেখ করা দেখায় যে আপনি কেবল local-এ নয়, production-এ Boot app চালিয়েছেন।
বিস্তারিত উত্তরসহ IT ইন্টারভিউ প্রশ্নের একটি লাইব্রেরি — জুনিয়র থেকে সিনিয়র পর্যন্ত।
দান করুন