метод get нужно сгруппировать. Например: get / users & get / users / {id} будет get / users / {id}
Я не согласен с этим./get/users
будет возвращать List<User>
и get/users/{id}
вернет User
, что соответствует {id}
удалить метод put и просто использовать post Ex: post / users / 0добавить |post / users / {id} update
Пост должен использоваться при создании нового ресурса.ПОСТ не идемпотент.Каждый раз, когда вы вызываете сообщение, будет создан новый ресурс.например, вызов POST / Users будет создавать нового пользователя каждый раз.
PUT для других рук работает как upsert.Создать, если ресурс отсутствует, и обновить / заменить, если он есть.Put является идемпотентом и не меняет состояние ресурса, даже если он вызывается несколько раз.
создайте вспомогательный класс для Jdbc Template и вызовите его в классах репозитория для централизации кода
Вспомогательные классы помогают разделить проблемы и достичь единой ответственности,
Однако JdbcTemplate - это готовая к использованию абстракция JDBC.Я не вижу смысла в создании Помощника.Вы можете создать DataAccessObject (DAO) или репозиторий, который has-a
JdbcTemplate.Как и два Dao, показанные ниже
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public User findUserById(String id){}
public void addUser(User user){}
}
// -------
public class BooksDao{
@Autowired
private JdbcTemplate jdbcTemplate;
public List<Book> getAllBooksByType(String type){}
public void Book getBookByName(String name){}
}
Теперь, ваши объекты Dao могут вызываться из контроллера или, если вам нужно изменить данные до / после работы с БД, лучше всего иметь служебный уровень между контроллером и Dao.
Не беспокойтесь о рекомендациях или правилах.Придерживайтесь основных концепций OOPS.Это действительно легко понять и реализовать.
Всегда:
Инкапсулируйте переменные данных и методы, работающие над этими переменными вместе
Убедитесь, что ваш класс имеет единую ответственность
Напишите меньшие и тестируемые методы (если вы не можете написать тесты для вашего метода, значит, что-то не так с вашим методом)
Всегда держите проблемы отдельно
Убедитесь, что ваши объекты слабо связаны.(Вы уже используете пружину, поэтому просто используйте автоматическое подключение пружины)