@PostConstruct এবং @PreDestroy Annotation এর ব্যবহার

Spring Bean Lifecycle - স্প্রিং ডিপেনডেন্সি ইনজেকশন (ডিআই) (Spring Dependency Injection) - Java Technologies

318

@PostConstruct এবং @PreDestroy হল দুটি গুরুত্বপূর্ণ অ্যানোটেশন যা Spring Framework-এ ব্যবহার করা হয়, যা lifecycle hooks হিসেবে কাজ করে। এগুলি Spring Beans এর 生命周期 (lifecycle) পরিচালনা করতে ব্যবহৃত হয় এবং Spring DI ব্যবস্থাপনার সময় কিছু অতিরিক্ত প্রক্রিয়া সম্পন্ন করতে সহায়ক।

  • @PostConstruct: এটি একটি মেথডকে চিহ্নিত করে যা Spring Bean তৈরি হওয়ার পর স্বয়ংক্রিয়ভাবে কল হয়, অর্থাৎ Bean ইনস্ট্যান্সিয়েশন ও DI (Dependency Injection) সম্পন্ন হওয়ার পর।
  • @PreDestroy: এটি একটি মেথডকে চিহ্নিত করে যা Spring Bean ধ্বংস হওয়ার আগে স্বয়ংক্রিয়ভাবে কল হয়, অর্থাৎ Bean ধ্বংস হওয়ার পূর্বে কিছু ক্লিনআপ প্রক্রিয়া করতে সহায়ক।

এই দুটি অ্যানোটেশন javax.annotation প্যাকেজের অংশ এবং Spring এর Bean lifecycle এর একটি গুরুত্বপূর্ণ অংশ হিসেবে কাজ করে।


@PostConstruct Annotation

@PostConstruct অ্যানোটেশন ব্যবহার করে আপনি কোনো মেথডে initialization logic লিখতে পারেন, যা Bean ইনস্ট্যান্সিয়েশন এবং DI এর পর কল হবে। এটি সাধারণত Bean তৈরি হওয়ার পর যেসব প্রক্রিয়া শুরু করার জন্য ব্যবহৃত হয়।

@PostConstruct এর ব্যবহার

  1. Bean তৈরি হওয়ার পর প্রথমবার কল হওয়া মেথডের জন্য ব্যবহৃত হয়
  2. এটি ব্যবহার করা হয় যেখানে আপনার Bean-এ কিছু initialization logic প্রয়োজন, যেমন ডেটাবেস কানেকশন সেট আপ করা, কনফিগারেশন প্যারামিটার লোড করা ইত্যাদি।

উদাহরণ:

import javax.annotation.PostConstruct;

@Component
public class EmployeeService {

    private DatabaseConnection dbConnection;

    @Autowired
    public EmployeeService(DatabaseConnection dbConnection) {
        this.dbConnection = dbConnection;
    }

    @PostConstruct
    public void init() {
        // Bean তৈরি হওয়ার পর প্রথম কল হবে
        System.out.println("EmployeeService Bean Initialized.");
        dbConnection.connect(); // ডাটাবেস কানেকশন সেট আপ করা
    }

    public void processEmployeeData() {
        // অন্যান্য লজিক
    }
}

ব্যাখ্যা:

  • @PostConstruct অ্যানোটেশন ব্যবহার করে init() মেথডটি কল হচ্ছে Bean ইনস্ট্যান্সিয়েশন এবং DI (Dependency Injection) এর পরে।
  • এই মেথডে আমরা ডাটাবেস কানেকশন তৈরি বা অন্যান্য প্রাথমিক সেটআপ করতে পারি।

@PreDestroy Annotation

@PreDestroy অ্যানোটেশন ব্যবহার করে আপনি কোনো মেথডে cleanup logic লিখতে পারেন, যা Spring Bean ধ্বংস হওয়ার আগে স্বয়ংক্রিয়ভাবে কল হবে। এটি সাধারণত সেই মেথডে ব্যবহৃত হয় যেখানে Bean এর জীবনের শেষে কিছু প্রক্রিয়া (যেমন, রিসোর্স মুক্ত করা, কানেকশন বন্ধ করা ইত্যাদি) সম্পন্ন করা হয়।

@PreDestroy এর ব্যবহার

  1. Bean ধ্বংসের আগে কল হওয়া মেথডের জন্য ব্যবহৃত হয়
  2. এটি ব্যবহৃত হয় যখন আপনার Bean ধ্বংস হওয়ার পূর্বে কিছু ফাইনাল কার্যকলাপ করতে হয়, যেমন রিসোর্স মুক্ত করা, ফাইল বা ডাটাবেস কানেকশন বন্ধ করা ইত্যাদি।

উদাহরণ:

import javax.annotation.PreDestroy;

@Component
public class EmployeeService {

    private DatabaseConnection dbConnection;

    @Autowired
    public EmployeeService(DatabaseConnection dbConnection) {
        this.dbConnection = dbConnection;
    }

    @PreDestroy
    public void cleanup() {
        // Bean ধ্বংস হওয়ার আগে কল হবে
        System.out.println("Cleaning up resources.");
        dbConnection.disconnect(); // ডাটাবেস কানেকশন বন্ধ করা
    }

    public void processEmployeeData() {
        // অন্যান্য লজিক
    }
}

ব্যাখ্যা:

  • @PreDestroy অ্যানোটেশন ব্যবহার করে cleanup() মেথডটি Bean ধ্বংস হওয়ার আগে কল হবে।
  • এখানে আমরা ডাটাবেস কানেকশন বন্ধ করার কাজটি করছি।

Spring Bean Lifecycle-এ @PostConstruct এবং @PreDestroy এর ভূমিকা

Spring কনটেইনারের মধ্যে Bean Lifecycle চারটি প্রধান পর্যায়ে বিভক্ত:

  1. Bean instantiation: Bean তৈরি করা হয়।
  2. Dependency Injection: Spring কনটেইনার DI এর মাধ্যমে নির্ভরতাগুলি ইনজেক্ট করে।
  3. Initialization: @PostConstruct অ্যানোটেশন দ্বারা চিহ্নিত মেথড কল করা হয়, যেখানে প্রাথমিক সেটআপ বা initialization কাজ করা হয়।
  4. Destruction: @PreDestroy অ্যানোটেশন দ্বারা চিহ্নিত মেথড কল করা হয়, যেখানে Bean ধ্বংসের আগে ক্লিনআপ কাজ করা হয়।

Spring Bean Lifecycle Diagram:

  1. Bean তৈরি করা হয়।
  2. DI প্রক্রিয়া শেষ হওয়ার পর @PostConstruct মেথড কল হয়।
  3. Bean ব্যবহার করা হয়।
  4. Bean ধ্বংসের আগে @PreDestroy মেথড কল হয়।

@PostConstruct এবং @PreDestroy এর সাথে Spring Context Configuration

Spring কনটেইনার যখন Bean তৈরি করে, তখন @PostConstruct এবং @PreDestroy অ্যানোটেশনগুলিকে খুঁজে বের করে এবং যথাক্রমে Bean initialization এবং destruction প্রক্রিয়া পরিচালনা করে।

উদাহরণ:

@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
        EmployeeService employeeService = context.getBean(EmployeeService.class);
        
        // Bean ব্যবহার করা
        employeeService.processEmployeeData();

        // Context বন্ধ করা, যেখানে @PreDestroy কল হবে
        context.close();
    }
}

ব্যাখ্যা:

  • Spring কনটেইনার @PostConstruct এবং @PreDestroy অ্যানোটেশনগুলির মাধ্যমে Bean initialization এবং destruction পরিচালনা করবে।

সারাংশ

Spring এর @PostConstruct এবং @PreDestroy অ্যানোটেশনগুলি Spring Bean এর lifecycle-এর দুইটি গুরুত্বপূর্ণ ধাপ। @PostConstruct ব্যবহার করে Bean তৈরি হওয়ার পর যে প্রাথমিক সেটআপ বা initialization কাজ করতে হয়, তা করা যায়। অপরদিকে, @PreDestroy ব্যবহৃত হয় Bean ধ্বংস হওয়ার আগে কিছু ক্লিনআপ বা রিসোর্স মুক্ত করার কাজ করার জন্য। এই অ্যানোটেশনগুলি Spring Bean lifecycle এর মধ্যে গুরুত্বপূর্ণ ভূমিকা পালন করে, যাতে কোডের কার্যকারিতা এবং রক্ষণাবেক্ষণ সহজ হয়।

Content added By
Promotion

Are you sure to start over?

Loading...