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,187