Bas-startern bör användas av alla utvecklade tjänster och den innehåller funktionalitet och konfiguration för:
Jackson (serialisering/deserialisering av JSON)
För att förenkla användning inaktiverar startern följande Spring Boot-auto-konfigurationer:
org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration
För att återaktivera dem kan man i lämplig konfigurationsklass manuellt importera dem, genom t.ex. @Import(SecurityAutoConfiguration.class)
.
Felhantering
TODO - skriv lite om Problem-biblioteket och RFC7807
RequestId-hantering
TODO
Truststore
Truststore-funktionalitet innebär att man kan skapa en “in-memory”-truststore baserat på SSL-certifikat (i PEM-format). Detta eliminerar behovet av att skapa separata truststore-/keystore filer med hjälp av t.ex. keytool. Det enda som behövs är att lägga certifikatet i katalogen classpath:truststore/.
Truststore används även av “spring-cloud-config-server-client”-funktionaliteten. I det fallet har även ett certifikat till “config-servern” bundlats med dept44-startern. Behovet av att varje klient måste sätta upp en egen truststore-fil för config-serverns SSL-cert är därmed undanröjt.
Inställning | Default-värde | Beskrivning |
---|---|---|
|
| Stänger av eller slår på Truststore |
|
| Anger sökväg till de certifikat klienten lagt till (om inte default-katalogen “truststore/” används) |
Loggning
Generell loggning sker med hjälp av SLF4J, t.ex.:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; ... public class MyClass { private static final Logger LOG = LoggerFactory.getLogger(MyClass.class); ... public void doSomething(String s) { LOG.debug("Doing something with {}", s); } }
Loggning av trafik, såväl för inkommande och utgående requests och responses sker med hjälp av biblioteket Logbook.
Inställningar
(Auto-konfigurationsklass: se.sundsvall.dept44.configuration.LogbookConfiguration
)
Inställning | Default-värde | Beskrivning |
---|---|---|
|
| Anger den logg-kategori som trafikloggningen ska göras i |
|
| Anger de sökvägar som ska exkluderas från trafikloggning |
Viktigt att komma ihåg om man sätter om logg-kategorin är att man då även sätter om loggnivån på den konfigurerade loggkategorin till TRACE
- om det inte görs kommer ingen trafikloggning att dyka upp i applikationens logg.
Jackson (serialisering/deserialisering av JSON)
Jackson används för serialisering av objekt till JSON och tillbaka - d.v.s. deserialisering av JSON till objekt. Konfigurationen som görs i ramverket innefattar bland annat:
null
-värden exkluderas vid serialiseringden JSON-data som genereras är indenterad, för ökad läsbarhet
okända attribut ignoreras vid deserialisering
Inställningar
(Auto-konfigurationsklass: se.sundsvall.dept44.configuration.ObjectMapperConfiguration
)
Inställning | Default-värde | Beskrivning |
---|---|---|
|
| Används för att aktivera/inaktivera konfigurerad ObjectMapper |
OpenAPI och Swagger UI
För att generera OpenAPI v3.x-specifikation och tillhandahålla ett Swagger UI används SpringDoc.
Minimal konfiguration i application.properties
:
openapi.name=ett-api openapi.title=Ett API openapi.version=1.0
Se nedan för övriga valbara inställningar.
Inställningar
(Auto-konfiguration: se.sundsvall.dept44.configuration.openapi.OpenApiConfiguration
)
Inställning | Default-värde | Beskrivning |
---|---|---|
| - | Namn som används för att generera URL till API-dokumentation. Får bara innehålla bokstäver, siffror, underscore och bindestreck |
| - | Titel som ska användas i OpenAPI-specifikationen |
| - | Versionsnummer som ska användas i OpenAPI-specifikationen |
| MIT | Namn på den licens som ska ingå i OpenAPI-specifikationen |
| Länk till den licens som ska ingå i OpenAPI-specifikationen | |
| - | Namnet på den kontakt som ska ingå i OpenAPI-specifikationen |
| - | E-postadressen till den kontakt som ska ingå i OpenAPI-specifikationen |
| - | URL för den kontakt som ska ingå i OpenAPI-specifikationen |
| - | TODO |
| - | TODO |
| - | TODO |
| - | Eventuella tillägg till OpenAPI-specifikationen (se https://swagger.io/docs/specification/openapi-extensions/) |
|
| Anger om en genererad |