Как закрепить пробелы в знаниях по Java?
а спринг типа не используется для консольного приложения? и что тебе мешает тот же di спринга в консольном приложении использовать? 
В общем странный вопрос. Если не знаешь основ джавы, то в спринг соваться рано. 
Твоего уровня никто не знает, какие цели задачи не знаю, и как тут можно тогда сказать какую тему пора изучать? 

задачи решал по джаве, проекты не делалзадачи и проекты в данном контексте вообще синонимы. По моему плохо понимаешь что есть что. Просто продолжай изучать все подряд и меньше вопросов из разряда "а мне учить дальше или не учить"
Если хорошо знаешь коллекции, можешь приступать у Spring. А ещё учи SQL. А ещё Stream API. Ну и многопоточку, хотя бы на уровне понимания. 
Я бы не советовал "выучить всю Java" до уровня сдачи экзамена у Oracle и только потом приступать к фреймворкам. Надо так: 
база -> вширь -> влубь -> вширь -> вглубь -> вспомнил что забыл -> вширь...
С SQL так: учишь основу, потом соединяешь с Java (делаешь простые примеры на JDBC), потом делаешь примеры на Hibernate, потом соединяешь всё в Spring. Делая проекты на Spring ты чаще всего будешь использовать Spring Data JPA (по сути Hibernate), но имея перед собой свои же примеры ты легко напишешь хитрый метод, который эффективно вытащит данные через JDBC. Или будет маленький проектик без Spring. Или в консоли полазать с ручными запросами. Но опять же, не стоит учить "весь SQL полностью". Хорошо понял JOIN - можешь приступать к Hibernate и Spring Data JPA. Потом будешь добирать чего не хватает, тебе будет легче т.к. имея опыт, ты будешь понимать что спрашивать у Яндекса и не будешь падать в обморок от вида кода на StackOverFlow :)