All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.lambadaframework.runtime.spring.AppContext Maven / Gradle / Ivy

The newest version!
package org.lambadaframework.runtime.spring;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class AppContext {

    private static final AppContext appContext = new AppContext();

    public static AppContext getInstance() {
        return appContext;
    }

    private final AnnotationConfigApplicationContext springContext = new AnnotationConfigApplicationContext();
    private String packageName = null;

    public void destroy() {
        springContext.stop();
    }

    public void setPackageName(final String packageName) {
        if (this.packageName == null) {
            synchronized (this) {
                if (this.packageName == null) {
                    springContext.scan(packageName);
                    final String[] packageSplit = packageName.split("\\.");
                    springContext.scan(packageSplit[0] + "." + packageSplit[1]);
                    try {
                        springContext.refresh();
                        springContext.start();
                        springContext.registerShutdownHook();
                    } catch (final RuntimeException ex) {
                        // might not work in this case
                    }
                    this.packageName = packageName;
                }
            }
        }
    }

    public  T getBean(final Class clazz) {
        return springContext.getBean(clazz);
    }

    public String getPackageName() {
        return packageName;
    }

    public AnnotationConfigApplicationContext getSpringContext() {
        return springContext;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy