code: public static <T> Specification<T> combineWithAnd(final List<Specification<T>> specList) {
          if (specList.isEmpty()) {
              return null;
          }
          Specification<T> specs = Specification.where(specList.get(0));
          for (final Specification<T> specification : specList.subList(1, specList.size())) {
              specs = specs.and(specification);
          }
          return specs;
      }
docs: Combine all given specification with and. The first specification is the
  where clause.
  
  @param specList
  all specification which will combine
  @return <null> if the given specification list is empty