Sobes.tech
Junior — Middle

როგორ შეიძლება თავიდან აიცილოს კონფლიქტი, როდესაც იყენებთ ორი ერთნაირ ბინს Spring კონტეინერში?

sobes.tech AI

პასუხი AI-სგან

სპრინგ კონტეინერში კონფლიქტი წარმოიქმნება, თუ ორი ბინი ერთსა და იმავე სახელით (იდენტიფიკატორით) არის. კონფლიქტის თავიდან ასაცილებლად:

  • გამოიყენეთ სხვადასხვა სახელები ბინებისთვის @Component("სახელი") ან XML/Java კონფიგურაციაში.
  • ინექციის დროს გამოიყენეთ @Qualifier ანოტაცია, რათა მკაფიოდ მიუთითოთ, რომელი ბინი უნდა გამოიყენოს.
  • ერთ-ერთ ბინს მიეცით @Primary ნიშნული, რათა ის გამოიყენოს როგორც დეფოლტად კონფლიქტის დროს.

@Qualifier-ის მაგალითი:

@Component("beanOne")
public class BeanOne {}

@Component("beanTwo")
public class BeanTwo {}

@Service
public class MyService {
    private final BeanOne beanOne;

    public MyService(@Qualifier("beanOne") BeanOne beanOne) {
        this.beanOne = beanOne;
    }
}