Editer le POM et y ajouter JPA + Driver (postgresql)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.6</version>
</dependency>
Sur les entités ajouter les annotations JPA sur l'entête de la classe
@Entity
@Table(name="mon_objet")
Sur votre identifiant technique de votre entité
@JsonProperty("techId")
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "commande_id_tech")
private long techId;
N'oubliez pas d'ajouter l'annotation @Column
sur les propriétés de vos entités
Ajouter un repository par entité exemple :
package com.toto.ex.test.repository;
import com.toto.ex.test.domain.Test;
import org.springframework.data.jpa.repository.JpaRepository;
public interface TestRepository extends JpaRepository<Test, Long> {
}
```
injecter le repository dans l'implémentation du controller
```java
@Autowired
private TestRepository testRepository;
```
Modifier le fichier de configuration de votre projet. Ici le fichier a été passé au format Yaml
[En mémo l'ensemble des propriétés Spring que l'on pourrait trouver dans un fichier de properties](https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html)
```yaml
# One port by SpringBoot application
server:
port: ${port:8091}
context-path: /test/api
#Spring Server Configuration
spring:
application:
name: Test
# ===============================
# = DATABASE
# ===============================
# Connection url for the database
datasource:
url: jdbc:postgresql://localhost:5432/test
# Username and password
username: test
password: test
testWhileIdle: true
validationQuery: SELECT 1
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
format_sql: true # For debugging
jdbc:
lob:
non_contextual_creation: true
# Enable logging of SQL statements.
show-sql: true
# Hibernate ddl auto (create, create-drop, update): with "update" the database schema will be automatically updated accordingly to java entities found in the project
hibernate:
ddl-auto: update
# ===============================
# = LOGS
# ===============================
# Profile LEVEL DEV , REC , PROD
profiles:
active: DEV
# Log locations
logging:
file: test.log
# Log configuration location
#config: config/logback-spring.xml
# ===============================
# = DOCUMENTATION API
# ===============================
#SpringFox Documentation Api
springfox:
documentation:
swagger:
v2:
path: /api-docs
```
BONUS :
Ajoutez un fichier de configuration Logback dans resources
`logback-spring.xml`
```xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %n</Pattern>
</encoder>
</appender>
<appender name="ROLLING-FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
</appender>
<!-- # Available levels are: TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF -->
<root level="ERROR">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="ROLLING-FILE"/>
</root>
<springProfile name="DEV">
<!-- Replace your.package your start package name -->
<logger name="your.package" level="DEBUG" appender-ref="ROLLING-FILE"/>
<logger name="org.hibernate" level="DEBUG" appender-ref="ROLLING-FILE"/>
<logger name="org.springframework" level="INFO" appender-ref="ROLLING-FILE"/>
</springProfile>
<springProfile name="REC">
<!-- Replace your.package by your start package name -->
<logger name="your.package" level="INFO" appender-ref="ROLLING-FILE"/>
<logger name="org.hibernate" level="ERROR" appender-ref="ROLLING-FILE"/>
<logger name="org.springframework" level="ERROR" appender-ref="ROLLING-FILE"/>
</springProfile>
<springProfile name="PROD">
<!-- Replace your.package by your start package name -->
<logger name="your.package" level="ERROR" appender-ref="ROLLING-FILE"/>
<logger name="org.hibernate" level="ERROR" appender-ref="ROLLING-FILE"/>
<logger name="org.springframework" level="ERROR" appender-ref="ROLLING-FILE"/>
</springProfile>
</configuration>
```
BONUS 2 ajoutez la supervision à votre projet
Dépendance dans le `pom.xml`
```
<!--Management dependencies -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
```
Puis la configuration dans votre application `application.yml`
```yml
# ===============================
# = SPRINGBOOT MANAGEMENT
# ===============================
management:
server:
# Option : default same application port
port: ${admin-port:9991}
# see endpoint https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html
endpoints:
web:
#Option default: /actuator
base-path: "/management"
exposure:
include: info, health, metrics
cors:
allowed-origins: '*'
allowed-method: GET
info:
app:
name: Test
# ISO-8859 don't use french character or use Unicode
description: API Test
version: 1.0.0
encoding: UTF-8
```
Ici sur votre serveur vous aurez les infos utiles sur l'état de votre application ex :
VOTREIP:9991/management/health