BACKEND PROGRAMOZÁS SPRINGBEN
Kiss Anna
Codespring, Kolozsvár
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249211/festivapp_logo_with_name.png)
Miért Java?
- bombabiztos alapozás
- elterjedt
- fejlett, érett eszközök
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249320/java-logo-vector.png)
- open source community 156k GitHub repository
- megbízható könyvtárak
- statikus típuskezelés
- kompilált nyelv
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249213/gradle.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249212/maven-logo-black-on-white.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3248355/Trends.png)
forrás: blog.takipi.com
Miért Java?
- bombabiztos alapozás
- elterjedt
- fejlett, érett eszközök
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249320/java-logo-vector.png)
- open source community 156k GitHub repository
- megbízható könyvtárak
- statikus típuskezelés
- kompilált nyelv
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249213/gradle.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249212/maven-logo-black-on-white.png)
Alternatívák
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3236609/nodejs-new-pantone-black.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3248438/Python_logo_and_wordmark.svg.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3236602/logo-6192ac44030c8a2cabddc9f99ef287d9.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3236606/Go-brown-side.sh-600x600.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3248439/Net-Logo.png)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249250/project-icon-large-boot.png)
Spring Boot
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249250/project-icon-large-boot.png)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249250/project-icon-large-boot.png)
Spring Boot
IOC konténer, dependency injection
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249250/project-icon-large-boot.png)
Spring Boot
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249253/project-icon-large.png)
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);
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249250/project-icon-large-boot.png)
Spring Boot
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249253/project-icon-large.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249254/project-icon-large-data.png)
Spring Framework
Spring Data
spring-data-jpa
spring-jdb spring-orm
Multitenancy aspektusokkal
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249250/project-icon-large-boot.png)
Spring Boot
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249253/project-icon-large.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249254/project-icon-large-data.png)
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);
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249250/project-icon-large-boot.png)
Spring Boot
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249253/project-icon-large.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249254/project-icon-large-data.png)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249250/project-icon-large-boot.png)
Spring Boot
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249253/project-icon-large.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249254/project-icon-large-data.png)
spring-web spring-webmvc
Spring Framework
Spring Data
Biztonsági megoldások
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249250/project-icon-large-boot.png)
Spring Boot
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249253/project-icon-large.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249254/project-icon-large-data.png)
-
autentifikáció (hitelesítés):
- UserDetailsService
- UserDetails objektum (azonosító, jelszó)
-
autorizáció (engedélyezés):
- OAuth2 standard, password flow
- JWT tokenek
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249255/project-icon-large-security.png)
Spring Framework
Spring Data
Spring Security
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249250/project-icon-large-boot.png)
Spring Boot
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249253/project-icon-large.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249254/project-icon-large-data.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249255/project-icon-large-security.png)
Spring Framework
Spring Data
Spring Security
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249273/project-icon-large-social.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249276/project-icon-large-cloud.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249275/project-icon-large-big-data.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/612690/images/3249271/project-icon-large-android.png)
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,111