code: public static synchronized ContextHolder getInstance() {
  
          if (INSTANCE == null) {
              Properties props = new Properties();
              try {
                  props.load(new ClassPathResource("/cudafunctions.properties", ContextHolder.class.getClassLoader()).getInputStream());
              } catch (IOException e) {
                  throw new RuntimeException(e);
              }
  
              INSTANCE = new ContextHolder();
              INSTANCE.configure();
  
  
              //set the properties to be accessible globally
              for (String pair : props.stringPropertyNames())
                  System.getProperties().put(pair, props.getProperty(pair));
  
  
          }
  
  
          return INSTANCE;
      }
docs: Singleton pattern
  
  @return the instance for the context holder.