Guice হলো Google-এর তৈরি একটি ওপেন-সোর্স ডিপেনডেন্সি ইনজেকশন (DI) ফ্রেমওয়ার্ক, যা Java-তে ডিপেনডেন্সি ম্যানেজমেন্ট সহজ করে তোলে। এটি অ্যাপ্লিকেশনের ক্লাসগুলোর মধ্যে ডিপেনডেন্সিগুলো আলাদা করার মাধ্যমে কোডকে আরো modular এবং maintainable করে। Guice প্রজেক্টে ব্যবহার করতে Eclipse বা IntelliJ IDEA-এর মতো IDE-তে সহজেই সেটআপ করা যায়।
Guice সেটআপ (Eclipse/IntelliJ IDEA)
১. Maven/Gradle এর মাধ্যমে Guice ডিপেনডেন্সি যোগ করা
Maven:
pom.xml-এ নিচের ডিপেনডেন্সি যুক্ত করুন:
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>5.1.0</version> <!-- সর্বশেষ সংস্করণ -->
</dependency>
Gradle:
build.gradle-এ নিচের ডিপেনডেন্সি যুক্ত করুন:
implementation 'com.google.inject:guice:5.1.0'
২. Guice সেটআপ (Eclipse/IntelliJ IDEA)
- Maven/Gradle প্রজেক্ট তৈরি করুন:
- Eclipse বা IntelliJ IDEA-তে নতুন Maven/Gradle প্রজেক্ট তৈরি করুন।
- প্রজেক্টের ডিপেনডেন্সিতে Guice যুক্ত করুন।
- Guice লাইব্রেরি যোগ করুন (যদি Maven/Gradle না থাকে):
- Guice JAR ফাইল Maven Repository থেকে ডাউনলোড করুন।
- Eclipse/IntelliJ-এ JAR ফাইল প্রজেক্টের লাইব্রেরি হিসেবে যুক্ত করুন।
Guice ব্যবহার করার উদাহরণ
১. Module তৈরি করা
Guice-এ একটি Module তৈরি করতে হবে যা ডিপেনডেন্সি কনফিগার করে।
import com.google.inject.AbstractModule;
public class AppModule extends AbstractModule {
@Override
protected void configure() {
bind(Service.class).to(ServiceImpl.class);
}
}
২. Interface এবং তার Implementation
public interface Service {
void serve();
}
public class ServiceImpl implements Service {
@Override
public void serve() {
System.out.println("Service is being served!");
}
}
৩. Injector ব্যবহার করে ডিপেনডেন্সি ইনজেকশন
import com.google.inject.Guice;
import com.google.inject.Injector;
public class Main {
public static void main(String[] args) {
// Guice Injector তৈরি
Injector injector = Guice.createInjector(new AppModule());
// Service ইনজেক্ট করা
Service service = injector.getInstance(Service.class);
service.serve();
}
}
৪. Constructor Injection
Guice অটোমেটিকভাবে Constructor Injection সাপোর্ট করে।
import com.google.inject.Inject;
public class Client {
private final Service service;
@Inject
public Client(Service service) {
this.service = service;
}
public void doWork() {
service.serve();
}
}
public class Main {
public static void main(String[] args) {
Injector injector = Guice.createInjector(new AppModule());
Client client = injector.getInstance(Client.class);
client.doWork();
}
}
Eclipse/IntelliJ IDEA-তে Debugging
- Breakpoint সেট করুন: Eclipse বা IntelliJ IDEA-তে ক্লাসের কোডে যেখানে Guice ডিপেনডেন্সি ব্যবহার করা হয়েছে সেখানে ব্রেকপয়েন্ট যোগ করুন।
- Step Into/Over করুন: ডিবাগ মোডে
Injectorকিভাবে ক্লাস বা ইন্টারফেস ইনজেক্ট করছে তা ট্রেস করুন। - Dependency Binding চেক করুন:
to()মেথডের মাধ্যমে কোন ইন্টারফেসের জন্য কোন ইমপ্লিমেন্টেশন বাউন্ড হয়েছে তা ডিবাগ করতে পারেন।
Guice এর সুবিধা
- Loose Coupling: ক্লাসগুলোর মধ্যে Tight Coupling কমায়, যা অ্যাপ্লিকেশনের maintainability বৃদ্ধি করে।
- Automatic Dependency Injection: ম্যানুয়াল ইনজেকশন প্রয়োজন হয় না।
- Testability বৃদ্ধি: Mock ডিপেনডেন্সি ব্যবহার করে সহজে টেস্ট করা যায়।
- Annotation Support:
@Injectএবং@Providesএর মতো অ্যানোটেশন ব্যবহার করে কনফিগারেশন সহজতর হয়।
Eclipse বা IntelliJ IDEA-তে Guice সেটআপ এবং ব্যবহার সহজ। Guice একটি শক্তিশালী ফ্রেমওয়ার্ক যা Dependency Injection-এর মাধ্যমে কোডের readability এবং maintainability উন্নত করে। একটি বড় প্রজেক্টে Guice ব্যবহারে ডিপেনডেন্সি ম্যানেজমেন্ট আরো সহজ ও কার্যকর হয়।
Read more