Відмінності між версіями «Розробка простого RESTfull сервіса засабами Spring Boot»
Рядок 7: | Рядок 7: | ||
* Створюємо базу даних: | * Створюємо базу даних: | ||
+ | |||
<source lang="sql"> | <source lang="sql"> | ||
CREATE DATABASE `springboot`; | CREATE DATABASE `springboot`; | ||
+ | |||
USE `springboot`; | USE `springboot`; | ||
+ | |||
CREATE TABLE `users` ( | CREATE TABLE `users` ( | ||
`id` int(11) NOT NULL AUTO_INCREMENT, | `id` int(11) NOT NULL AUTO_INCREMENT, | ||
Рядок 19: | Рядок 22: | ||
* Проект повинен мати таку структуру: | * Проект повинен мати таку структуру: | ||
+ | |||
<source lang="bash"> | <source lang="bash"> | ||
/ | / | ||
Рядок 40: | Рядок 44: | ||
* Створюємо файл конфігурації Maven проекту /pom.xml із наступним вмістом: | * Створюємо файл конфігурації Maven проекту /pom.xml із наступним вмістом: | ||
+ | |||
<source lang="xml"> | <source lang="xml"> | ||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||
Рядок 94: | Рядок 99: | ||
</build> | </build> | ||
</project> | </project> | ||
+ | </source> | ||
+ | |||
+ | * Описуємо модель User /src/main/java/com/example/models/User.java Зазначимо, що використання анотацій та реалізація методів геттерів/сеттерів є обов'язковою. | ||
+ | |||
+ | <source lang="java"> | ||
+ | package com.example.models; | ||
+ | |||
+ | import javax.persistence.Entity; | ||
+ | import javax.persistence.GeneratedValue; | ||
+ | import javax.persistence.GenerationType; | ||
+ | import javax.persistence.Id; | ||
+ | import javax.persistence.Table; | ||
+ | import javax.validation.constraints.NotNull; | ||
+ | |||
+ | @Entity | ||
+ | @Table(name = "users") | ||
+ | public class User { | ||
+ | |||
+ | @Id | ||
+ | @GeneratedValue(strategy = GenerationType.AUTO) | ||
+ | private long id; | ||
+ | |||
+ | @NotNull | ||
+ | private String email; | ||
+ | |||
+ | @NotNull | ||
+ | private String name; | ||
+ | |||
+ | public User() { } | ||
+ | |||
+ | public User(long id) { | ||
+ | this.id = id; | ||
+ | } | ||
+ | |||
+ | public User(String email, String name) { | ||
+ | this.email = email; | ||
+ | this.name = name; | ||
+ | } | ||
+ | |||
+ | public long getId() { | ||
+ | return id; | ||
+ | } | ||
+ | |||
+ | public void setId(long value) { | ||
+ | this.id = value; | ||
+ | } | ||
+ | |||
+ | public String getEmail() { | ||
+ | return email; | ||
+ | } | ||
+ | |||
+ | public void setEmail(String value) { | ||
+ | this.email = value; | ||
+ | } | ||
+ | |||
+ | public String getName() { | ||
+ | return name; | ||
+ | } | ||
+ | |||
+ | public void setName(String value) { | ||
+ | this.name = value; | ||
+ | } | ||
+ | } | ||
</source> | </source> |
Версія за 23:36, 6 листопада 2016
Spring Boot - це Java фреймворк, що є частиною Java-EE фреймоворку Spring Framework. Фактично, Spring Boot являє собою плагін для систем автоматичного збирання проектів Maven та Gradle. Він надає можливості для комфортної розробки та тестування Spring додатків. Окрім того, Spring Boot дозволяє упаковувати додаток в окремий jar-файл із вбудованим повноцінним контейнером Tomcat. Основною перевагою використання Spring Boot є зведення до мінімуму конфігураційних xml файлів, які зазвичай використовуються при розробці Spring додатку.
Власне сам Spring Framework надає надзвичайно широкі можливості для розробки enterprise java-додатків. Його можна описати як множину менших фреймворків, причому більшість цих дочірніх фреймворків можуть працювати незалежно один від одного, однак вони забезпечують найкращу функціональність саме при спільному використанні. Повноцінний огляд усього Spring Framework виходить далеко за межі цієї статті. Детальніше можна ознайомитись на офіційному сайті Проте, варто вказати найбільший недолік Spring - надмірне використання xml конфігурацій при налаштуванні. Саме тому як компроміс між функціональністю та зручністю був створений Spring Boot.
Ми розглянемо створення простого RESTfull сервіса із реалізацією CRUD операцій та MySQL як сховищем даних. Для реалізації задуманого нам нам потрібні Java 8, система автоматичної збірки Maven та MySQL.
- Створюємо базу даних:
CREATE DATABASE `springboot`; USE `springboot`; CREATE TABLE `users` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL, `email` VARCHAR(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- Проект повинен мати таку структуру:
/
├── pom.xml
└── src
└── main
├── java
│ └── com
│ └── example
│ ├── Application.java
│ ├── controllers
│ │ ├── MainController.java
│ │ └── UserController.java
│ └── models
│ ├── Response.java
│ ├── UserDao.java
│ └── User.java
└── resources
└── application.properties
- Створюємо файл конфігурації Maven проекту /pom.xml із наступним вмістом:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>spring-boot-REST+mysql</artifactId> <version>0.0.1-SNAPSHOT</version> <name>spring-boot-REST+mysql</name> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.5.RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> <scope>test</scope> </dependency> </dependencies> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <start-class>com.example.Application</start-class> <java.version>1.8</java.version> </properties> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
- Описуємо модель User /src/main/java/com/example/models/User.java Зазначимо, що використання анотацій та реалізація методів геттерів/сеттерів є обов'язковою.
package com.example.models; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import javax.validation.constraints.NotNull; @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; @NotNull private String email; @NotNull private String name; public User() { } public User(long id) { this.id = id; } public User(String email, String name) { this.email = email; this.name = name; } public long getId() { return id; } public void setId(long value) { this.id = value; } public String getEmail() { return email; } public void setEmail(String value) { this.email = value; } public String getName() { return name; } public void setName(String value) { this.name = value; } }