BACKEND PROGRAMOZÁS SPRINGBEN
Kiss Anna
Codespring, Kolozsvár
Miért Java?
- bombabiztos alapozás
- elterjedt
- fejlett, érett eszközök
- open source community 156k GitHub repository
- megbízható könyvtárak
- statikus típuskezelés
- kompilált nyelv
forrás: blog.takipi.com
Miért Java?
- bombabiztos alapozás
- elterjedt
- fejlett, érett eszközök
- open source community 156k GitHub repository
- megbízható könyvtárak
- statikus típuskezelés
- kompilált nyelv
Alternatívák
Spring vs. Java EE
- innováció, valódi problémák megoldása
- convention over configuration
- a kitelepítéshez elég egy web szerver
ágyúval verébre lőni
Modularitás
- Spring projektek
From configuration to security, web apps to big data
– whatever the infrastructure needs of your application may be,
there is a Spring Project to help you build it. Start small and use just what you need – Spring is modular by design.
- spring.io
Projekt konfigurálása
- out of the box
- convention over configuration
- Spring Initializr: start.spring.io
Spring Boot
Spring Boot
compile("org.springframework.boot:spring-boot-starter-web")
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
build.gradle
Application.java
Projekt konfigurálása
- out of the box
- convention over configuration
- Spring Initializr: start.spring.io
Spring Boot
IOC konténer, dependency injection
Spring Boot
Spring Framework
- Spring bean-ek életciklisának menedzselése, függőségeik kezelése
- injektálás: @Autowired annotáció
spring-core spring-beans
Adathozzáférési réteg
- spring-data-jpa
- a Spring Frameworkra épít
- absztrakciós szint a JPA implementáció felett
- JPA annotációk a model osztályokban
- CrudRepository interfész
List<Event> findEventsByStartDateBetweenAndLocationIdOrderByStartDateAsc(
Date date1, Date date2, Long locationId);
Spring Boot
Spring Framework
Spring Data
spring-data-jpa
spring-jdb spring-orm
Multitenancy aspektusokkal
Spring Boot
spring-aop
Spring Framework
Spring Data
- több forrásból származó adatok különválasztása
- kérések interceptálása az adathozzáférési réteg előtt
- tenant id beállítása az aspektusban
- az AspectJ teljes mértékben integrálható
REST API
@RequestMapping(value = "/api/programs/{programId}/events/{eventId}",
method = RequestMethod.GET)
public EventDTO findEvent(@PathVariable final String programId,
@PathVariable final Long eventId);
Spring Boot
spring-web spring-webmvc
Spring Framework
Spring Data
-
Front Controller tervezési minta
- @RequestMapping: handler metódusok
-
@RestController: JSON-ba alakítja a választ, ha a Jackson2 a classpathen van
Kivételek, hibák
@ResponseStatus(HttpStatus.NOT_FOUND)
public class NotFoundException extends ApiException {
//...
}
- kivételek mappelése HTTP error code-okra
Spring Boot
spring-web spring-webmvc
Spring Framework
Spring Data
Biztonsági megoldások
Spring Boot
-
autentifikáció (hitelesítés):
- UserDetailsService
- UserDetails objektum (azonosító, jelszó)
-
autorizáció (engedélyezés):
- OAuth2 standard, password flow
- JWT tokenek
Spring Framework
Spring Data
Spring Security
Spring Boot
Spring Framework
Spring Data
Spring Security
Spring for Android
Spring Social
Spring XD
Spring Cloud
-
Rest kliens
-
autentifikáció
-
Facebook
-
Twitter
-
LinkedIn
- Big Data
- feldolgozás
- elemzés
- adatexportálás
-
microservice-ek fejlesztése, telepítése
-
osztott rendszerek fejlesztéséhez használt minták támogatása
Build anything - Run anywhere - Rest assured
- spring.io
Backend programozás Springben
By Anna Kiss
Backend programozás Springben
- 2,169