some spring boot examples:
- prop-test
- actuator-default
- h2-default
- h2-default
- hibernate-nplusone
- application context
- bean factory
- FactoryBean
- приложение доступно по следующему url: http://localhost:8092
- доступные конечные точки актуатора:
/autoconfig
/beans
/configprops
/env
/info
/metrics
/logfile
/trace
Spring boot по умолчанию настраивает h2 на работу из памяти
# h2 data source
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.user=sa
spring.datasource.password=
В примере используются настройки по умолчанию. Генерим схему БД по Entity и подгружаем начальные данные из скрипта data.sql
.
# generate db scheme
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create
# load data.sql
spring.datasource.initialize=true
Разрешаем в приложении работу с h2 консолью:
spring.h2.console.enabled=true
Путь к консоли стандартный: http://localhost:8090/h2-console
Для простоты реализации пример доступен по REST. Примеры http запросов:
- простотреть все записи
GET localhost:8090/items
- создать третью запись
POST localhost:8090/items
Content-Type: application/json
{
"name": "new item",
"description": "short descr"
}
- показать третью запись
GET localhost:8090/items/3
- запросить доступные функции для поиска
GET localhost:8090/items/search
- поиск записей по функции
GET localhost:8090/items/search/findByName?name=new%20item
- отредактировать запись используя PUT, PATCH или DELETE
PUT localhost:8090/items/3
Content-Type: application/json
{
"name": "Item3",
"description": "long description"
}
- удалить запись
DELETE localhost:8090/items/3
Пример того как решать проблему N+1 для hibernate
- Для запуска выполнения асинхронного задания необходимо выполнить следующий запрос:
PUT localhost:5000/demo/task/3
- контроллер получает реквест, запускает асинхронное задание и тут же возвращает ответ
Все путем!
- Пример показывает как использовать
AnnotationConfigApplicationContext
класс для создания Spring Context.
- Пример показывает как использовать
AnnotatedBeanDefinitionReader
класс для програмной регистрации бинов в Spring Context'е.
Пример показывает как использовать FactoryBean
класс для изменения бинов перед загрузкой в Spring Context'е.