Pull to refresh
29
3.1
Григорий Кислин @gkislin

Автор онлайн обучения Java: https://javaops.ru

Send message

Тестируем Spring Rest контроллеры: проще, короче, надежнее. Spring Security Test + JSON Matcher

Reading time3 min
Views34K


Здравствуйте!
Собственный JSON Matcher, использование Spring Security Test, недавно вошедший в Spring Security 4.0, и отказ от транзакций при тестировании сервисов позволяют сделать тесты проще и надежнее.

Я использовал данный подход при создании приложения на своем курсе Topjava (Maven/ Spring/ Security/ JPA(Hibernate)/ Rest(Jackson)/ Bootstrap(CSS)/ jQuery + plugins).
Данная статья не является еще одним учебником по тестированию Spring REST контроллеров и предполагает что вы уже с ним знакомы.

Про выгоды отказа от транзакций я уже писал в предыдущей публикации По следам Spring Pet Clinic. Maven/ Spring Context/ Spring Test/ Spring ORM/ Spring Data JPA. К перечисленным недостаткам использования @Transaction еще можно добавить невозможность посмотреть реальные запросы при выполнении метода сервиса к базе (например при включенном hibernate.use_sql_comments)

Здесь я напишу как проще, короче, надежнее тестировать Spring REST контроллеры.
Читать дальше →
Total votes 8: ↑6 and ↓2+4
Comments1

По следам Spring Pet Clinic. Maven/ Spring Context/ Spring Test/ Spring ORM/ Spring Data JPA

Reading time8 min
Views48K

Здравствуйте!
Spring MVC, согласно обзору инструментов и технологий Java за 2014 г. от RevbelLabs, является самым популярным веб фреймворком.
Далее тот же обзор называет лидера ORM — Hibernate и лидера веб-контейнеров — Apache Tomcat. Добавим сюда самую используемую java script библиотеку jQuery, самый популярный css фреймворк Bootstrap, до сих пор самую популярную (несморя на наступление Gradle) инструмент сборки Maven, абсолютный лидер среди тестовый фреймворков JUnit и получим пример приложения на Spring от его создателей:
Spring Pet Clinic (демо приложение).
Кроме перечисленного, в этот достаточно несложный по функциональности проект влючены также Spring-Jdbc, Spring-ORM,
Spring Data JPA,
Hibernate Validator,
SLF4J,
Json Jackson,
JSP,
JSTL,
WebJars,
Dandelion DataTables,
HSQLDB,
Hamcrest,
Mockito и десятки других зависимостей.
Читать дальше →
Total votes 19: ↑15 and ↓4+11
Comments9

Путь к Java Junior Developer

Reading time5 min
Views495K


Здравствуйте.
Меня зовут Кислин Григорий. В начале ноября в Санкт-Петербурге закончился первый обучающий семинар «Java. Базовый курс», сейчас переименнованый в «Java. Junior Developer. Интенсив». Хочу поделиться с Вами полученным при его проведении опытом на тему обучения Java а также своим опытом трудоустройства на позицию Java разработчика.

Читать дальше →
Total votes 34: ↑15 and ↓19-4
Comments14

Поддержка транзакций, тестового окружения и другие удобные надстройки над commons-dbutils

Reading time7 min
Views5.7K

Поддержка транзакций, тестового окружения и другие удобные надстройки над commons-dbutils.


"/>
  Если обращение к RDBMS вашего проекта ведется не через ORM или Spring JdbcTemplate, то работу через голый JDBC может сильно скрасить commons-dbutils.
Особенно если его надстроить транзакциями, работой с разными окружениями, авто-открытием/закрытием ресурсов, запрсами read-only, обработкой SqlException, возвратом pk при вставке и т.д.
Т.е, например, чтобы можно было бы сделать так:
int userId = Sql.queryForValue("SELECT ID FROM OU.USERS WHERE LAST_NAME=?", "IVANOV");
Sql.update("DELETE FROM OU.USERS WHERE FIRST_NAME=? AND LAST_NAME=?", fname, lname);
List<User> list = Sql.query("SELECT FROM OU.USERS", USER_LIST_HANDLER);
int newId = Sql.insert("INSERT INTO OU.USERS VALUES (?,?)", fname, lname);

И этот код работал бы внутри транзакции, через Application Server Connction pool и в JUnit без изменений и mock-ов.
За чуть меньше года моей работы с commons-dbutils он оброс различными классами и утильными методами, о которых и хочу здесь рассказать.
Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments2

Архитектура базы данных: унификация (на примере ERP)

Reading time3 min
Views15K

Есть концепции работы с базой, основанные на ORM, CodeFirst со своими преимуществами и недостатками. Предлагаемая здесь унификация базы основана в первую очередь на подходе Database First.

Схема базы данных приложений со сложной доменной моделью (к которым относятся системы ERP) обычно состоит из
нескольких сотен таблиц.
Поэтому на начальном этапе проектирования базы для избежания многократных дублирований и разбухания схемы важно
определиться с несколькими базовыми таблицами для хранения общих свойств базовых сущностей приложения
и все остальные таблицы уже проектировать как вспомогательные или дополнения основных таблиц.
Читать дальше →
Total votes 14: ↑7 and ↓70
Comments21

Переход с Java на Scala (Clojure, Haskell, Erlang ..) как повышение абстракции программирования

Reading time3 min
Views32K
А что такого можно написать на Scala, чего нельзя на Java?
(из разговора с одним моим знакомым другом, человеком и программистом)
The best reason to learn a new programming language is to learn to think differently.
Chad Fowler

Хочу рассказать не о простоте конструкций Scala по сравнению с Java и не о том, что в 1 строчку Scala я могу уместить 20 строк Java. А наоборот, копнуть поглубже, уронить устои ООП и посмотреть на реакцию благородной публики.
Читать дальше →
Total votes 52: ↑29 and ↓23+6
Comments83

Трудозатраты на реализацию «простого» модуля отправки Email в приложении с модульной архитектурой

Reading time11 min
Views26K
На php отправка mail реализуется одной строчкой кода! А на java- нужно 3 недели??!
(из разговоров с разработчиками и менеджерами)


Статья не о том, как отправлять почту на java. Моя цель — показать сложности модульной разработки больших приложений (на примере разработки ERP River).

Итак, задача: реализовать сервис отправки по email (war).

Этапы разработки:


Читать дальше →
Total votes 72: ↑60 and ↓12+48
Comments74
2

Information

Rating
952-nd
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Specialist
Lead
Java
Git
JavaScript
Training
Coaching
Interview
Team recruitment
IT consulting