Sobes.tech
Middle

Wat gebeurt er als je probeert dezelfde bean op te halen in de ApplicationContext?

sobes.tech AI

Antwoord van AI

ApplicationContext retourneert standaard een verwijzing naar hetzelfde bean, omdat de scope van beans standaard in Spring singleton is.

In het geval dat het bean is geconfigureerd met een andere scope, bijvoorbeeld prototype, zal de ApplicationContext bij elke aanvraag een nieuwe instantie van het bean creëren en retourneren.

Voorbeeld van het configureren van een bean met scope prototype:

@Configuration
public class AppConfig {

    @Bean
    @Scope("prototype") // We geven de scope `prototype` aan
    public MyPrototypeBean myPrototypeBean() {
        return new MyPrototypeBean();
    }
}

Voorbeeld van het verkrijgen van een bean uit de 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); // Voor singleton geeft het true, voor prototype false

        context.close();
    }
}