diff --git a/.gitignore b/.gitignore index 6ca05c4a5184..ad02a2599b5b 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,4 @@ out target *.iml -log - - - +log \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_servlet_jstl_1_2.xml b/.idea/libraries/Maven__javax_servlet_jstl_1_2.xml new file mode 100644 index 000000000000..f329893ed901 --- /dev/null +++ b/.idea/libraries/Maven__javax_servlet_jstl_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/IntelliLang.xml b/IntelliLang.xml new file mode 100644 index 000000000000..621d5ba9fd4e --- /dev/null +++ b/IntelliLang.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/_windows/git.xml b/_windows/git.xml new file mode 100644 index 000000000000..f649716a4862 --- /dev/null +++ b/_windows/git.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/_windows/keymap.xml b/_windows/keymap.xml new file mode 100644 index 000000000000..5526d9665f7e --- /dev/null +++ b/_windows/keymap.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/_windows/laf.xml b/_windows/laf.xml new file mode 100644 index 000000000000..dbf49b40fd2a --- /dev/null +++ b/_windows/laf.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/_windows/path.macros.xml b/_windows/path.macros.xml new file mode 100644 index 000000000000..5df491f82181 --- /dev/null +++ b/_windows/path.macros.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/baseRefactoring.xml b/baseRefactoring.xml new file mode 100644 index 000000000000..dd208be37f3d --- /dev/null +++ b/baseRefactoring.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/config/setenv.bat b/config/setenv.bat new file mode 100644 index 000000000000..ebbd659386f6 --- /dev/null +++ b/config/setenv.bat @@ -0,0 +1,4 @@ +rem run tomcat with JMX ability +rem Run Tomcat as admin +rem for remote connection add -Djava.rmi.server.hostname=TomcatServer_IP +set CATALINA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false diff --git a/databaseDrivers.xml b/databaseDrivers.xml new file mode 100644 index 000000000000..9db0ee25efa0 --- /dev/null +++ b/databaseDrivers.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/databaseSettings.xml b/databaseSettings.xml new file mode 100644 index 000000000000..2d4eced3d9a7 --- /dev/null +++ b/databaseSettings.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/debugger.renderers.xml b/debugger.renderers.xml new file mode 100644 index 000000000000..cad6048ab473 --- /dev/null +++ b/debugger.renderers.xml @@ -0,0 +1,34 @@ + + + + \ No newline at end of file diff --git a/debugger.xml b/debugger.xml new file mode 100644 index 000000000000..49914986e7c8 --- /dev/null +++ b/debugger.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/description.md b/description.md new file mode 100644 index 000000000000..cbb102fa72aa --- /dev/null +++ b/description.md @@ -0,0 +1,67 @@ +#### Разработка полнофункционального Spring/JPA Enterprise приложения c авторизацией и правами доступа на основе ролей с использованием наиболее популярных инструментов и технологий Java: Maven, Spring MVC, Security, JPA(Hibernate), REST(Jackson), Bootstrap (css,js), datatables, jQuery + plugins, Java 8 Stream and Time API +- Основное внимание будет уделяться способам решения многочисленных проблем разработки в Spring/JPA, а также структурному (красивому и надежному) java кодированию и архитектуре приложения. +- Каждая итерация проекта в закрепляется домашним заданием по реализации схожей функциональности. Следующее занятие начинается с разбора домашних заданий. +- Большое внимание уделяется тестированию кода: в проекте 88 JUnit тестов. +- Несмотря на относительно небольшой размер, приложение разрабатывается с нуля как большой проект (например мы используем кэш 2-го уровня Hibernate, настраиваем Jenkins для работы с ленивой загрузкой +Hibernate, делаем конверторы для типов LocalDateTime (Java 8 time API), которые еще не поддерживаются ни JPA/Hibernate, ни Jackson/json). + Разбираются архитектурные паттерны: слои приложения и как правильно разбивать логику по слоям, когда нужно применять Data Transfer Object. + Т.е на выходе получается не учебный проект, а хорошо маштабируемый шаблон для большого проекта на всех пройденных технологиях. +- Большое внимание уделяется деталям: популяция базы, использование транзакционности, тесты сервисов и REST + контроллеров, насторойка EntityManagerFactory, + выбор реализации пула коннектов. Особое внимание уделяется работе с базой: через Spring JDBC, Spring ORM и + Spring Data Jpa. +- Используются самые востребованные на сегодняшний момент фреймворки: Maven, Spring Security 4 + вместе с Spring Security Test, наиболее удобный для работы с базой проект Spring Data Jpa, библиотека логирования logback, реализующая SLF4J, повсеместно используемый Bootstrap и jQuery. + +#### Демо разрабатываемого приложения + +## План проекта (ссылки на некоторые темы открыты для просмотра) +### Архитектура проекта. Персистентность. +- Системы управления версиями +- Java 8: Lambda, Stream API +- Обзор используемых в проекте технологий и инструментов. +- Инструмент сборки Maven. +- WAR. Веб-контейнер Tomcat. Сервлеты. +- Логирование. +- Обзор стандартных библиотек. Apache Commons, Guava +- Слои приложения. Создание каркаса приложения. +- Обзор Spring Framework. Spring Context. +- Тестирование через JUnit. +- Spring Test +- Базы данных. PostgreSQL. Обзор NoSQL и Java persistence solution без ORM. +- Настройка Database в IDEA. +- Скрипты инициализации базы. Spring Jdbc Template. +- Spring: инициализация и популирование DB +- ORM. Hibernate. JPA. +- Поддержка HSQLDB +- Транзакции +- Профили Maven и Spring +- Пул коннектов +- Spring Data JPA +- Кэш Hibernate + +### Разработка WEB +- Spring кэш +- Spring Web +- JSP, JSTL, i18n +- Tomcat maven plugin. JNDI +- Spring Web MVC +- Spring Internationalization +- Тестирование Spring MVC +- REST контроллеры +- Тестирование REST контроллеров. Jackson. +- jackson-datatype-hibernate. Тестирование через матчеры. +- Тестирование через SoapUi. UTF-8 +- WebJars. +- Bootstrap. Datatables. +- AJAX. jQuery. Notifications. +- Spring Security +- Spring Binding/Validation +- Работа с Datatables через Ajax. +- Spring Security Test +- Encoding password +- CSRF (добавление в проект защиты от межсайтовой подделки запроса) +- form-login. Spring Security Taglib +- Handler interceptor +- Spring Exception Handling +- Деплой в Heroku diff --git a/diff.xml b/diff.xml new file mode 100644 index 000000000000..ea515a783648 --- /dev/null +++ b/diff.xml @@ -0,0 +1,41 @@ + + + + + + + + \ No newline at end of file diff --git a/file.template.settings.xml b/file.template.settings.xml new file mode 100644 index 000000000000..44e5e67b786d --- /dev/null +++ b/file.template.settings.xml @@ -0,0 +1,15 @@ + + + +