<Introduction/>
О языке Java
В данном вводном уроке кратко рассмотрим, что такое Java, где она используется и почему её стоит изучать. Java — это строго типизированный язык програ...
В данном вводном уроке кратко рассмотрим, что такое Java, где она используется и почему её стоит изучать. Java — это строго типизированный язык програ...
Основной слоган Java таков: «Write once, run anywhere» — «Написано однажды, работает везде». Чтобы понять, откуда это взялось, начнём с краткого экску...
Прежде чем приступить к установке, давайте разберёмся, какие бывают Java-пакеты. Их два: JRE – для запуска java программ. Состоит из Java м...
В этом уроке создадим и запустим первую Java программу. В результате выполнения действий приведенных в прошлом уроке все библиотеки Java доступны на н...
Переменная — это как коробка с этикеткой. Этикетка — это имя переменной, а внутри коробки — то, что ты положил: число, текст, любой другой тип данных....
В предыдущих уроках мы уже научились выводить данные на консоль. Теперь разберёмся, как вводить данные в программу с клавиатуры через консоль и исполь...
Комментарии не влияют на выполнение программы — они нужны только для пояснения кода, как для вас, так и для других разработчиков, которые будут его чи...
Есть пять типов операторов: операторы присвоения, арифметические операторы, операторы сравнения, логические операторы и условные операторы. С одним оп...
Операторы сравнения нужны, как можно догадаться, чтобы сравнивать. Сравнивать одно значение с другим. Например: 6 < 3. Знак > — это оператор “...
Логических операторов всего три – “И”, “ИЛИ” и “НЕ”. В Java воспользоваться оператором “И” можно...
В прошлых уроках мы изучили операторы сравнения и логические операторы. В этом уроке рассмотрим как выражения с операторами можно использовать. Чаще в...
Цикл может пригодиться в программе если нужно повторять какое-о действие или набор действий определенное количество раз. Есть три вида циклов: for, wh...
В данном уроке рассмотрим ключевые слова break и continue. Если нужно раньше времени остановить цикл по какому-то условию, то используется ключевое сл...
В этом уроке мы познакомимся с массивами в Java: разберём их концепцию, научимся с ними взаимодействовать и узнаем, какие типы массивов бывают. В прош...
В прошлых уроках мы уже сталкивались со строками, когда передавали текст в кавычках “” в функцию вывода на консоль — например: System.out....
В этом уроке мы познакомимся с понятием функций, которые в Java все же корректнее называть методами. Несмотря на это, термин “функция” шир...
После изучения функций, условий и циклов стоит поговорить об области видимости переменных — то есть, где переменные “видны” и доступны для...
ООП (Объектно-ориентированное программирование) – это способ построения программных продуктов. Такие программные продукты состоят из объектов и ...
У класса может быть специальный метод, который не имеет возвращаемого значения и который имеет то же самое имя, что и класс. Этот метод называется кон...
ООП основывается на трёх ключевых принципах: – Инкапсуляция, Полиморфизм, Наследование. Начнем с инкапсуляции. Инкапсуляция означает сокрытие де...
В прошлом уроке мы рассмотрели базовые принципы инкапсуляции. Теперь, продолжая эту тему, пора познакомиться с модификаторами доступа public и private...
В Java поля класса никогда не следует определять как public, то есть они не должны быть доступны напрямую. Вместо этого поля должны быть private, а до...
Наследование дает возможность одному классу получить доступ к полям и методам другого класса. Однако между этими классами должна быть логическая связь...
Полиморфизм — возможность использовать одно и то же имя для разных реализаций методов или конструкторов. В Java полиморфизм реализуется с помощью пере...
Абстрактный класс – общий концепт чего-либо. Это класс, который содержит в себе нереализованные методы (называются абстрактными методами), котор...
Интерфейс – определяет поведение классов. В нем могут быть только поля и абстрактные методы (методы без реализаций, как мы помним). Интерфейс со...
Допустим у нас есть класс и мы хотим чтобы какие-то поля или методы этого класса принадлежали одновременно всем объектам этого класса. Такие поля и ме...
Внутренний класс – класс внутри другого класса. Некоторая доп. функциональность, которая относиться только к внешнему классу. Класс внутри друго...
Статический класс это всегда внутренний класс. Статического не внутреннего класса не бывает. Обычный внутренний класс и статический внутренний класс ч...
В 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 – first in...
Благодаря классам реализующим 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-приложении может быть много. Давайте создадим еще один контроллер – MVController2. В адресной строке браузера можно у...
Давайте создадим приложение в котором: Для начала, нужно создать страницу формы через которую пользователь будет отправлять данные в обработчик и стра...
В спринг есть специальные теги, которые упрощают нам разработку. В этом уроке рассмотрим специальный тег 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. Его структура приведена н...