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();
    }
}