<Introduction/>
О языке Java
Что такое Java, где она используется и стоит ли её изучать? Java — это строго типизированный язык программирования общего назначения. Почему он строго...
Что такое Java, где она используется и стоит ли её изучать? Java — это строго типизированный язык программирования общего назначения. Почему он строго...
Девиз Java таков “Написано однажды работает везде” Начнем из далека. Раньше программы для выполнения компьютером писались в формате машинн...
Для начала немного о разных Java пакетах, их два: JRE – для запуска java программ. Состоит из Java машины и библиотеки java классов. Компил...
Создадим и запустим первую Java программу. В результате выполнения действий приведенных в прошлом уроке все библиотеки Java доступны на нашем компьюте...
Что такое переменная? Переменная это просто место (хранилище) в котором можно хранить какие либо данные и содержимое этого места можно менять. Простей...
Выводить значения на консоль мы уже научились, теперь рассмотрим ввод значения в программу через консоль с клавиатуры. Введенное в программу значение ...
Рассмотрим комментарии. Комментарии никак не влияют на ход выполнения программы, они лишь нужны чтобы, как можно догадаться, комментировать код. Однос...
Рассмотрим операторы. Есть пять типов операторов: операторы присвоения, арифметические операторы, операторы сравнения, логические операторы и условные...
Рассмотрим операторы сравнения. Если кто-то гадал зачем нужен тип boolean, то сейчас узнает. Операторы сравнения нужны, как можно догадаться, чтобы ср...
Рассмотрим логические операторы. Их три – “И”, “ИЛИ” и “НЕ”. В Java воспользоваться оператором “И̶...
Итак, как же эти выражения с операторами, которые мы изучили можно использовать? Например, в операторе сравнения if…else. Им можно проверить воз...
Рассмотрим циклы. Цикл нужен чтобы повторять какое-о действие или набор действий какое-то количество раз. Есть три вида циклов for, while и do..while....
Далее рассмотрим ключевые слова break и continue. Если нужно раньше времени остановить цикл по какому-то условию, то используется ключевое слово break...
Рассмотрим массивы. В прошлых уроках у нас была переменная int a=31; хранящая одно число 31. А что если мы хотим иметь переменную в которой будет хран...
Мы уже видели строку когда передавали что-либо внутри кавычек “” в функцию вывода на консоль – System.out.println(“строка̶...
Рассмотрим функции (также называют методами). До этого мы уже употребляли некоторые функции например println() для вывода строки в консоль, replace дл...
Немного об области видимости. class Test { static int averageOf3Nums(int a, int b, int c) { int sum = a + b + c; int resultAverage = sum / 3; return r...
Что такое ООП (Объектно-ориентированное программирование)? Это способ построения программных продуктов. Такие программные продукты состоят из объектов...
У класса может быть специальный метод без возвращаемого значения и который имеет то же самое имя, что и класс. Этот метод называется конструктором. Он...
ООП стоит на трех столпах – Инкапсуляция, Полиморфизм, Наследование. Начнем с первого. Инкапсуляция – это сокрытие деталей реализации клас...
В продолжение темы инкапсуляции необходимо знать о модификаторах доступа public, private и protected. С помощью этих модификаторов мы можем ограничить...
Поля любого класса не должны быть доступны напрямую, они всегда должны быть private, а доступ к ним должен обеспечиваться с помощью специальных методо...
Благодаря наследованию один класс может иметь доступ к полям другого класса. Но эти классы должны быть логически связаны и связанность между ними долж...
Что же такое полиморфизм? Это способность использовать одно и тоже имя для разных задач. Поясним на примере: class Animal { private String eats; priva...
Абстрактный класс – общий концепт чего-либо. Это класс, который содержит в себе нереализованные методы (называются абстрактными методами), котор...
Интерфейс – определяет поведение классов. В нем могут быть только поля и абстрактные методы (методы без реализаций, как мы помним). Интерфейс со...
Допустим у нас есть класс и мы хотим чтобы какие-то поля или методы этого класса принадлежали одновременно всем объектам этого класса. Такие поля и ме...
Внутренний класс – класс внутри другого класса. Некоторая доп. функциональность, которая относиться только к внешнему классу. Класс внутри друго...
Статический класс это всегда внутренний класс. Статического не внутреннего класса не бывает. Обычный внутренний класс и статический внутренний класс ч...
В Java есть два типа данных – ссылочные типы и типы значений. int, char ,float и т.д это типы значений. Это простые типы. Это просто число либо ...
Рассмотрим передачу ссылочного типа в метод и передачу типа значения в метод. Для начала передадим в метод тип значения. public class LinkValInMethodE...
Что такое аннотация в Java? Представьте себе склад с коробками. На каждой из коробок есть надпись, которая говорит тому кто будет отгружать эти коробк...
Если при работе Java приложения возникает ошибка(исключение) и обработка данной ошибки не предусмотрена в программе этого приложения, то приложение ОС...
Если мы хотим сделать класс более гибким в плане типов, которые в нем используются, то можно воспользоваться обобщениями (generics). Класс в примере н...
Часто бывает нужно изменить тип переменной. То есть, например, была создана переменная типа int, и нам в какой-то момент стало необходимо изменить ее ...
Для хранения строки мы знаем тип String. Но он не всегда бывает эффективен. Поэтому есть еще другие классы для хранения строк и взаимодействия с ними,...
Есть специальные классы обертки – Integer, Char, Float. Они также как и простые типы значений хранят в себе одно простое значение: Integer ̵...
Ключевое слово assert используется для проверки какого-либо условия в ходе разработки. Программа выдает исключение, то есть происходит ошибка если выр...
В java 8 всё же появилась возможность добавлять реализации методов в интерфейс. Нужно в основном для того чтобы у классов реализующих интерфейс не был...
Анонимный класс – одноразовая реализация интерфейса без создания полноценного класса. То есть нам не нужно создавать много объектов, будет тольк...
В прошлом уроке мы видели интерфейс с одним единственным абстрактным методом. Такой интерфейс называется функциональным. Функциональный интерфейс R...
Что же такое лямбда выражения? Всё просто. Это просто сокращенная форма реализации функц. интерфейса с помощью анонимного класса. Реализовывать абстра...
Stream – для работы с коллекциями. Избавляет от необходимости вручную реализовывать операции над коллекциями. Проще говоря пишем запрос к коллек...
File – класс для работы с элементами файловой системы. С помощью различных методов этого класса можно получить информацию о переданном в констру...
Все классы в Java наследуют от некого класса Object. В этом классе определены некоторые важные методы, которые необходимо знать и самое главное уметь ...
Второй метод Object это метод clone, который клонирует объект. Происходит копирование всех полей клонируемого объекта в новый объект-клон. Но по умолч...
Следующий метод Object – это equals. Возвращает boolean значение. equals по умолчанию проверяет только то, ссылаются ли две ссылки на один и тот...
Внимание! Перед прохождением данного урока сначала необходимо пройти следующий раздел, а потом обязательно возвращайтесь сюда, данный урок довольно ва...
Что же такое коллекция? Это можно сказать такой особый тип массива. Мы знаем, что у обычного Java массива есть строгая граница количества элементов, к...
Благодаря Iterator можно перебирать любую коллекцию не вникая в особенности какой-либо из них. Пример программы: import java.util.*; @SuppressWarnings...
Благодаря классам реализующим Queue можно создавать массивы реализующие очередь. Что такое очередь, FIFO? Очередь работает по принципу FIFO – fi...
Благодаря классам реализующим Map можно создать массив из пар ключ-значение. То есть один элемент этого массива это пара. Пример программы: import jav...
Благодаря классам реализующим Set можно создать массив в котором элементы не повторяются. HashSet это как hashmap, только без значений, только ключи. ...
Часто так бывает, что нам нужно ввести куда-то информацию и откуда-то ее вывести. Например, извлечь что-нибудь из файла или записать туда что-либо. Пр...
FileOutputStream, FileInputStream – для чтения файла и записи в файл. В конструкторе должен быть указываем путь к файлу с которым будем совершат...
DataInputStream DataOutputStream – чтение байтового потока и запись в байтовый поток в формате примитивных типов данных. Пример программы: impor...
BufferedInputStream, BufferedOutputStream – чтение байтового потока и запись в байтовый поток с добавлением буфера для улучшения производительно...
StringReader, StringWriter – потоки, которые хранят строку в себе с которой мы работаем через эти потоки как с любыми другими источниками дынных...
SequenceInputStream – сливает потоки в один поток. Он считывает от первого byte до последнего byte первого InputStream, затем делает то же самое...
PipedInputStream, PipedOutputStream – применяется в многопоточной среде. Потоки в слове многопоточной, это не те потоки, которые мы сейчас изуча...
PushbackInputStream – прочитав несколько байтов входного потока с помощью inpsrream.read() бывает необходимо вернуться и прочитать эти же уже пр...
OutputStreamWriter – мост между символьными и байтовыми потоками. Пример программы: import java.io.*; import java.util.*; class OutputStreamWrit...
ObjectInputStream, ObjectOutputStream – для сериалиации/десериализации. Для сохранения копии объекта в поток (в файл, например) для восстановлен...
FilterInputStream, FilterOutputStream – абстрактные классы для создания собственных потоков или добавления функционала к существующим. В примере...
Создать нить(поток) можно тремя способами: Код класса расширяющего или реализующего что-нибудь выше перечисленное будет выполняться в отдельном потоке...
Реализуя Runnable тоже реализуется метод run в котором пишется код, который будет выполняться в отдельном потоке. Пример программы: //Создадим простен...
Для создания общей глобальной переменной, которую будут использовать несколько потоков используется слово volatile. Создадим два потока. Первый будет ...
Метод join останавливает поток в котором этот метод был вызван пока не закончит выполнение поток к которому этот метод был вызван. Более понятно на пр...
Если несколько параллельных потоков одновременно хотят выполнить один и тот же кусок кода одного и того же объекта, то можно сделать так чтобы они вып...
synchronized static (блокировка на уровне класса), а просто synchronized (блокировка на уровне объекта). В коде ниже у нас уже будут 2 объекта ресурса...
wait/notify – используется если нам нужно приостановить один поток и чтобы он ждал пока другой поток даст разрешение на продолжение выполнения о...
Когда поток вызывает метод yield он говорит: мне сейчас не обязательно заканчивать свою работу и занимать время процессора и больше времени передастся...
Обычно нужен если много потоков одновременно пытаются получить доступ к каким-то ресурсам, а нам нужно, чтобы к ним одновременно получала доступ тольк...
ReentrantLock ведет себя как synchronized, но есть некоторые отличия. Мы помним, что synchronized блочит цельный кусок кода, то есть synchronized, это...
CountDownLatch – нужен когда требуется чтобы какой-то поток ждал пока не выполняться какое-то количество потоков. В примере ниже мейн останавлив...
Принцып работы CyclicBarrier такой: потоки зависают друг за другом в месте вызова в них await. Когда зависло необходимое количество потоков, зависнувш...
Чтобы резко остановить поток можно использовать метод Stop(), но резко останавливать не рекомендуется, это может быть опасно. Поэтому метод Stop преда...
До этого мы рассматривали создание потоков с помощью Thread и Runnable. Последний вариант того как можно создать класс потока это реализовать Callable...
Создание потока дорогостоящая операция. Поэтому можно вместо создания новых потоков переиспользовать те которые завершили свою работу. ExecutorService...
ReadWriteLock – класс содержащий 2 лока: один для чтения, другой для записи. Часто бывает так, что один поток пишет в ресурс, а много других пот...
ThreadLocal – переменная ПОТОКА. Это не переменная объекта потока, а именно переменная ПОТОКА. То есть она принадлежит только одному потоку и су...
fork/join framework – для разбиения задачи на подзадачи и чтобы эти подзадачи выполнялись в отдельных потоках. Также эти подзадачи могут тоже де...
Что такое сериализация мы уже проходили в разделе потоки ввода/вывода, но повторим, так как это основы сериализации. ObjectOutputStream – сериал...
Как уже было сказано, при сериализации все поля сериализуемого объекта должны быть тоже Serializable. Если какое-то поле сериализуемого объекта не Ser...
У каждого сериализуемого класса (именно класса, не объекта класса) есть поле SerialVersionUID. Это числовой идентификатор, который меняется при каждом...
Cинглтон это класс, который может иметь только один экземпляр. То есть другой экземпляр этого класса невозможно создать. Если мы сериализуем этот экзе...
Externalizable – управляемая сериализация. Представим, что нужно сериализовать объект созданного нами класса расширяющий вообще сторонний класс,...
Что такое база данных? Думаю можно догадаться, что это хранилище, в котором хранятся данные. Наиболее удобный вариант хранения данных в БД в виде табл...
Есть таблица “Продукты”. У каждого продукта может быть категория, к которой он принадлежит. Например, стол и стул относятся к категории ме...
Далее рассмотрим тип связи Многие-ко-Многим. Например: У каждого продукта есть много покупателей и у каждого покупателя есть много купленных продуктов...
Последний вид связи – это Один-к-одному. Этот вид связи самый простой. Как понятно из названия, каждой строке одной таблицы соответствует только...
Теперь разберемся как же работать с Базой Данных. То есть как создать таблицу, добавить в нее данные, извлечь из нее данные, удалить ее и т.д. Для это...
Командой create database создадим базу данных с именем ecommerce, то есть интернет магазин. Перед прохождением раздела по SQL очень желательно пройти ...
В следующую группу команд под названием DML входят команды для манипулирования данными, а именно: Воспользуемся такими insert запросами для добавления...
Дальше разберем что такое агрегатные функции. Агрегатная функция может выполнить какие-либо операции над всеми значениями столбца или над группой знач...
Далее разберем ключевое слово Group by и having. С помощью Group by можно разбить значения какого-либо выбираемого из таблицы аттрибута на группы. Гру...
Теперь перейдем к подзапросам. Вот мы например вывели максимальное число в столбце. Оно ясное дело тоже было в какой-то строке таблицы (строка с id 7 ...
Далее разберем слово JOIN. У нас есть две связанные таблицы. Как видим каждый продукт связан с категорией по внешнему ключу category_id. В categ...
JDBC – программный интерфейс для взаимодействия Java приложения и базы данных. То есть, грубо говоря, мы можем работать с базой данных из Java п...
Представим, есть некоторая последовательность SQL запросов, которые должны последовательно выполняться. Если на определенном запросе возникнет ошибка,...
Класс SavePoint необходим для того, чтобы rollback был применен с определенной строки кода по определенную строку кода. Пример программы: import java....
Две или более выполняющиеся параллельно транзакции часто должны быть изолированы друг от друга. Есть три случая когда необходимо изолировать транзакци...
Допустим есть транзакция А и транзакция В в разных потоках. Допустим в транзакции А есть несколько select запросов подряд. Если транзакция В во время ...
Фантомное чтение – по сути то же самое, что и неповторяющееся, только вместо update базы, будет insert в базу. Для того чтобы изолировать транза...
Напрямую в запрос данные пользователя передавать нельзя! Это опасно. Пользователь может туда вставить любое sql выражение какое ему вздумается. Это на...
Хранимые процедуры это по сути функции, только вместо java кода sql код и эти функции хранятся в БД. Для создания этой процедуры в БД, нужно выполнить...
HTML – это язык разметки веб-страницы. С помощью html мы задаем странице определенный каркас. То есть этот язык определяет в каком порядке будут...
В этом уроке приведем несколько наиболее распространенных тегов, которые встречаются почти везде. Для начала рассмотрим теги title и h. Также сверху h...
Мы уже рассмотрели некоторые аттрибуты типа src, href и border. Как уже можно было понять, они нужны, чтобы каким-либо образом настраивать элементы на...
Как уже говорилось, html нужен только чтобы задать определенную структуру странице и добавлять на нее некоторые элементы. С помощью языка CSS мы можем...
А что, если мы хотим применить определённый набор CSS-свойств вообще к любому элементу на странице, не указывая конкретный тег, например h1 { … ...
Рассмотрим тег <div></div>. Это наверное один из самых часто встречающихся тегов в любом html документе. div сам по себе ничего не делает, но с ...
Все видели классическую структуру страницы: Верхняя часть страницы на которой панель навигации по сайту, логотип и другое, часть страницы с основным к...
До этого мы использовали только селектор конкретного тега ( например h1 {…} ) и селектор класса ( например some-class-name {…} ). Селектор...
JUnit — это библиотека для тестирования отдельных частей кода, в частности — методов. Когда мы реализовали какой-то метод, нам всегда нужно его протес...
Далее пройдемся по основным аннотациям junit. В скобках у аннотации Test можно указать число. Это число – это количество миллисекунд. Если метод...
Mockito довольно нужная штука и к сожалению немного сложноватая для понимания, поэтому здесь подробно. Часто бывает так, что подлежащий тестированию м...
Часто бывают ситуации когда нам нужно записать куда-то данные о работе программы или об произошедших ошибках в ней чтобы потом их просмотреть. Этим за...
Логирование настраивается в файле log4j.properies. Логгер записывает данные через appender. Аппендер бывает разных типов – для записи логов в фа...
Java EE – стандарт разработки веб-приложений используя язык Java. Предоставляет множество средств для реализации клиент-серверных приложений. В ...
Ниже приведен пример сервлета. Класс сервлета наследуется от класса HttpServlet и в нем реализуются методы doGet, doPost. В этих методах происходит пр...
Помимо doGet у сервлета есть и другие методы. Рассмотрим вкратце зачем нужны методы init, doPost, service и destroy. import java.io.IOException; impor...
Чтобы не конфигурировать путь, по которому будет происходить обращение к сервлету в web.xml можно использовать аннотацию WebServlet в коде сервлета. i...
Для начала рассмотрим GET-запрос. GET-запросы позволяют клиенту передавать параметры через адресную строку браузера. Эти параметры затем можно легко и...
Рассмотрим переход на другую страницу с помощью sendRedirect() sendRedirect() – перенаправляет на любой указанный аргументом адрес. Адрес в адре...
Cookies это данные, которые генерируются сервером и хранятся в браузере клиента. Браузер клиента возвращает эти данные обратно на сервер когда клиент ...
Если выбрать все cookies нашего веб-ресурса, то там всегда будет кук с именем SESSIONID и значением идентификатором. Этот идентификатор уникален для к...
ServletContext – контекст является объектом общим для всего приложения. В объекте ServletContext можно хранить какие-либо данные общие для всех ...
ServletConfig – можно сказать, что то же самое, что и ServletContext, но в отличии от него хранит данные касающиеся только конкретного сервлета....
Часто так бывает, что клиент отключил cookies в браузере, а id сессии храниться в cookies, а как-то поддерживать сессию надо. Выход есть. Для этого ну...
По умолчанию все клиенты обращаются к одному созданному объекту сервлета. Каждое обращение клиента к этому объекту создает отдельный поток, в котором ...
Часто бывает, что нужно чтобы перед вызовом какого-либо сервлета или после вызова выполнялся какой-либо код. Для этого нужно реализовать интерфейс Fil...
Часто бывает нужно проследить выполнение каких-то действий в сессии или контексте и т.д. Для этого используются слушатели. Например, для прослушивания...
Представим ситуацию, что сервлет ожидает завершения какого-то процесса выполняющегося в другом потоке, чтобы в последствии использовать результат его ...
Для начала создадим папку jsp в папке приложения helloservlet. В ней будут храниться jsp файлы. Также создадим здесь файлик с расширением .jsp. JSP &#...
На JSP странице можно пользоваться двумя видами комментариев. <%—-%> и <!—->. Первый это jsp комментарий, второй это html комм...
Допустим, мы хотим как в сервлете использовать на нашей JSP странице req и resp метода doGet. Где их взять? Для этого придумали специальные неявные об...
Мы рассмотрели action теги invoke и forward. Среди часто употребляемых еще есть useBean, setProprety, getProprety. Бин – это объект обычного кла...
MVC – MODEL, VIEW, CONTROLLER. Популярная архитектура построения приложений. Нужно знать. Клиент может передавать какие либо данные в CONTROLLER...
В прошлом уроке мы извлекали созданный в контроллере бин с помощью actioBean. Чтобы для создания и получения бина не писать вот так: <jsp:useBean i...
JSTL — это теговая альтернатива стандартному Java-коду на JSP. То есть все стандартные конструкции типа создания переменных, циклов, условий, исключен...
При проектировании того или иного программного продукта разработчик сталкивается с большим количеством проблем. И многие из этих проблем бывают ТИПИЧН...
Singleton – класс, который гарантировано имеет только один экземпляр. Используется, как какой-то глобальный ресурс доступ к которому есть в любо...
Data Access Object. Нужен чтобы отделить низкоуровневый доступ к данным от высокоуровневых сервисов. Низкоуровневый доступ – это, например, взаи...
Вся суть паттерна Front Controller в том, что все запросы обрабатываются централизовано через одно место. То есть любой запрос сначала идет в Front Co...
Template – это просто абстрактный класс, который задает скелет для расширяющих его классов. Приведем пример из жизни. Например, наша жизнь: Рожд...
В разделе по сервлетам мы уже встречались с так называемыми бинами — это обычные объекты классов с приватными полями, геттерами и сеттерами. Так вот, ...
Помним, что в прошлом уроке внедрение админа в ПК происходило с помощью конструктора в классе ПК. Но внедрять также можно с помощью сеттера Класс Serv...
Внедрять значения в поля бина можно не напрямую, а из внешнего файла. Давайте же создадим такой файл, в котором будут харнится данные в формате имя-зн...
Бин может иметь область, в которой он действует. Их 5: singleton, prototype, request, session и global-session. По дефолту scope у бина singleton. Это...
Жизненный цикл спринг бина таков: Что же это за init-method и destroy-method? Это что-то типа init и destroy методов в сервлете. Как мы помним, init м...
Как уже было упомянуто в конце прошлого урока, бины можно создавать не в applicationContext.xml, а аннотациями прямо в классах бинов. Благодаря этому ...
В прошлом уроке мы внедряли бин админа в бин ПК с помощью конструктора или сеттера помеченных аннотацией @Autowired. Но аннотация @Autowired намного м...
Иногда удобнее бывает конфигурировать бины не с помощью XML, а с помощью Java кода. То есть теперь вместо applicationContext.xml у нас будет Java клас...
До данного урока мы компилировали и запускали приложения вручную через консоль. Давайте же с началом изучения темы spring MVC переместимся в удобную с...
Что же такое Spring MVC? Это набор средств для построения веб-приложений. Подобных тем приложениям, которые мы уже разрабатывали, но в отличии от разр...
Классов контроллеров в MVC-приложении может быть много. Давайте создадим еще один контроллер – Controller2. В адресе можно указать не только обр...
Давайте создадим приложение в котором: Для начала, нужно создать страницу формы через которую пользователь будет отправлять данные в обработчик и стра...
В спринг есть специальные теги, которые упрощают нам разработку. В этом уроке рассмотрим специальный тег form:form. Тег form:form обеспечивает прямую ...
Помимо тега form:input, рассмотренного в прошлом уроке, есть также и другие теги с которыми мы можем связывать поля объекта в аттрибуте. В этом уроке ...
Валидация – это проверка данных формы на то подходят ли они под какие-то условия. Для начала необходимо скачать hibernate validator. Можно скача...
Hibernate реализует ORM-модель построения приложений. Благодаря ORM можно сохранить объект в базу данных. При сохранении какого-либо объекта в базу да...
В hibernate используется HQL, а не SQL. HQL работает с таблицей через класс, который связан с ней. То есть в запросе к БД мы указываем не название таб...
Если мы извлекли из таблицы строку в объект, а потом изменили его с помощью например сеттера, то после коммита транзакции он измениться и в базе. pack...
Если извлечь строку таблицы в объект, а потом применить метод delete на этот объект, то строка, которую мы извлекали удалиться в базе данных. Таким об...
В базе данных обычно существуют связанные таблицы. Все стандартные виды связей (1-к-1, 1-ко-Многим, Многие-Ко-Многим) можно реализовать и между java к...
Связь между объектами таблиц была односторонняя, то есть через объект Author удалялся из БД или сохранялся в БД связанный объект AuthorInfo. Теперь сд...
Теперь настроим в нашем приложении связь 1-ко-Многим. Создадим еще одну таблицу “Книги авторов”, которая будет связана с таблицей author. ...
LAZY, EAGER – это типы извлечения данных. Подробнее ниже. package HibernateApps; import java.util.List; import javax.persistence.CascadeType; im...
Теперь настроим в нашем приложении связь Многие-ко-Многим. Пусть теперь в нашем приложении будет еще одна новая таблица – “Издательство...
До этого момента мы все jar файлы наших проектов скачивали и добавляли вручную в папку lib проекта. Чтобы не делать это вручную существует Maven ̵...
Давайте же создадим первый мавен веб-проект. Во первых, Eclipse должен находиться в режиме создания веб-проекта. Переходим по пути: Window > Perspecti...
Давайте заглянем внутрь pom файла и разберемся с настройкой метаданных проекта в нем. 4.0.0 com.MavenWebAps firstMavenWebAp 0.0.1-SNAPSHOT jar firstMa...
В этом уроке создадим простое CRUD приложение с использованием hibernate. CRUD это аббревиатура: Наше приложение будет реализовывать все эти четыре оп...
В прошлом уроке мы построили Crud приложение, но это был не совсем правильный способ его построения. В этом уроке мы немного модернизируем наше CRUD п...
REST API – простой способ коммуникации между приложениями основанный на http методах передачи данных. Помним эти методы – GET, POST и др. ...
Создадим свое собственное Rest Api. То есть мы создадим набор методов, к которым можно будет обращаться http запросом по ссылке. Эти методы будут возв...
Создадим crud приложение только теперь с использованием REST. Создадим новое Maven приложение с такими папками и файлами. Содержимое файлов в этом cru...
Что такое Spring Boot приложение? Spring Boot приложение это почти то же самое Spring приложение, что мы изучали раньше, но с дополнительными средства...
Создадим Spring Boot Crud приложение. Это приложение будет предоставлять ту же функциональность, что и предыдущее CRUD приложение. То есть между клиен...
Создадим CRUD приложение, только теперь с использованием Spring Boot Data. Создадим новое Spring Boot приложение с такими папками и файлами. Содержимо...
Создадим crud приложение, только теперь с использованием Spring Data Rest. Создадим новое Spring Boot приложение с такими папками и файлами. Как видит...
С помощью докер можно запускать любые приложения реализованные любыми технологиями на любых языках программирования одной и той же командой. Вот такой...
Для начала работы с Docker необходимо его скачать и установить на компьютер по ссылке: https://www.docker.com/products/docker-desktop/ Также необходим...
В этом уроке соберем простейшее Spring Boot приложение в Docker-образ (Docker image), запустим его и загрузим на Docker Hub. Его структура приведена н...