public static DAOFactory getInstance() throws DAOException {
    Properties properties = new Properties();
    String url;
    String driver;
    String user;
    String password;

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    InputStream fileProperties = classLoader.getResourceAsStream(FILE_PROPERTIES);

    if (fileProperties == null) {
      throw new DAOException("Le fichier properties " + FILE_PROPERTIES + " est introuvable.");
    }

    try {
      properties.load(fileProperties);
      url = properties.getProperty(PROPERTY_URL);
      driver = properties.getProperty(PROPERTY_DRIVER);
      user = properties.getProperty(PROPERTY_USER);
      password = properties.getProperty(PROPERTY_PASS);
    } catch (IOException e) {
      throw new DAOException("Impossible de charger le fichier properties " + FILE_PROPERTIES, e);
    }

    try {
      Class.forName(driver);
    } catch (ClassNotFoundException e) {
      throw new DAOException("Le driver est introuvable dans le classpath.", e);
    }

    /*
     * Enrégistrement du pool créé dans une variable d'instance via un appel au constructeur de
     * DAOFactory.
     */
    DAOFactory instance = new DAOFactory(url, user, password);
    return instance;
  }