Sobes.tech
Middle

Какво ще се случи, ако се опитате да получите същия боб в ApplicationContext?

sobes.tech AI

Отговор от AI

ApplicationContext по подразбиране ще върне препратка към същия бийн, тъй като обхватът на бийните по подразбиране в Spring е singleton.

Ако бийнът е конфигуриран с друг обхват, например prototype, то при всяко искане ApplicationContext ще създава и връща нов екземпляр на бийн.

Пример за конфигурация на бийн с обхват prototype:

@Configuration
public class AppConfig {

    @Bean
    @Scope("prototype") // Задаваме обхвата `prototype`
    public MyPrototypeBean myPrototypeBean() {
        return new MyPrototypeBean();
    }
}

Пример за получаване на бийн от ApplicationContext:

public class Main {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

        MyPrototypeBean bean1 = context.getBean(MyPrototypeBean.class);
        MyPrototypeBean bean2 = context.getBean(MyPrototypeBean.class);

        System.out.println(bean1 == bean2); // За singleton ще върне true, за prototype ще върне false

        context.close();
    }
}