Příklady backendu ve springu

Arty

Příklady backendu ve springu
« kdy: 16. 10. 2018, 10:25:38 »
Ahoj,
pro své účely jsem si dělal aplikaci s použitím hibernate, spring mvc a front jsp.
Jednalo se o projekt, který by se dal použít pro nemocnici.

Zajímaji mě příklady z praxe, jelikož jsem student. Co přesně se dělá v backendu s použitím springu? Já ve svém projektu skončil s natáhnutí dat z db, sql, nějaká validace, kontrola dat, zabezpečení,, uložení dat do db a poslání dat na front end.
Je mi jasné, že třeba u bank je mnohem více práce na backendu.
Čili bych Vás chtěl poprosit, zda byste mi udali nějaké příklady z praxe, nějaké návrhy, co bych si mohl naprogramovat a procvičit se a bude to na tom backendu složitější, kde se dají použít nějaké pokročilé algoritmy atp.
Mockrát díky


kkt1

  • *****
  • 796
    • Zobrazit profil
Re:Příklady backendu ve springu
« Odpověď #1 kdy: 16. 10. 2018, 10:38:57 »
typicky se oddeluje frontend od backendu takovym zpusobem, ze FE nema sitovou konektivitu (fw deny) k BE a BE ma sitovou konektivitu k FE. Jak vyresis funkcionalitu webu ktery potrebuje nejaky username/password ktery je v BE databazi ke ktere nemas pristup z FE? To same ostatni funkcionalita na webu - kliknes generovat neco a ten job musi vzit BE od FE, zpracovat ho a predat zase FE ktery ho reprezentuje uzivateli... S timhle si muzes hrat pokud chces nekam do banky, ale v praxi budes bastlit nejakou korporatni s*acku.

Re:Příklady backendu ve springu
« Odpověď #2 kdy: 16. 10. 2018, 11:03:53 »
Backend často ukládá data do několika databází (evidenci do SQL databáze, podporu pro vyhledávání do fulltextové databáze nebo nějaké obecné NoSQL databáze, dokumenty do nějakého DMS) a komunikuje s dalšími systémy (REST, SOAP/XML, proprietární protokoly). Může notifikovat jiné systémy nebo uživatele (message queue, e-mail), může provádět nějaké akce podle kalendáře (např. uzávěrky účetnictví na konci měsíce, kvartálu, roku). Může generovat reporty nebo grafy (sice to obsahově patří do frontendu, ale třeba PDF, XLS nebo grafy je lepší generovat na backendu a na frontend už je poslat hotové).

Pokročilé algoritmy budou spíš v konkrétní doméně, pro nemocnici třeba plánování služeb nebo hlídání expirace léků a objednávání. Backend obecně je spíš o přehazování dat z jedné hromady na druhou, případně jejich transformace – nejsou to žádné složité algoritmy, spíš propojování existujících komponent.

Arty

Re:Příklady backendu ve springu
« Odpověď #3 kdy: 16. 10. 2018, 15:40:49 »
Díky ;).
Měl bych ještě jeden dotaz. V praxi - využívá se konfigurace přes xml/anotace/spring-boot?
Musím říct, že pote co jsem zjistil, jak je otravné nastavovat všechno to nastavení , tak jsem od toho chtěl utect, pak jsem vyzkoušel spring boot a kdyz se člověk může soustředit pouze na to programování, je to super.

kkt1

  • *****
  • 796
    • Zobrazit profil
Re:Příklady backendu ve springu
« Odpověď #4 kdy: 16. 10. 2018, 15:55:43 »
Díky ;).
Měl bych ještě jeden dotaz. V praxi - využívá se konfigurace přes xml/anotace/spring-boot?
Musím říct, že pote co jsem zjistil, jak je otravné nastavovat všechno to nastavení , tak jsem od toho chtěl utect, pak jsem vyzkoušel spring boot a kdyz se člověk může soustředit pouze na to programování, je to super.
jak kde...


Arty

Re:Příklady backendu ve springu
« Odpověď #5 kdy: 16. 10. 2018, 15:59:14 »
Díky ;).
Měl bych ještě jeden dotaz. V praxi - využívá se konfigurace přes xml/anotace/spring-boot?
Musím říct, že pote co jsem zjistil, jak je otravné nastavovat všechno to nastavení , tak jsem od toho chtěl utect, pak jsem vyzkoušel spring boot a kdyz se člověk může soustředit pouze na to programování, je to super.
jak kde...

Takže třeba xml se stále reálně používá? :O

Youda

Re:Příklady backendu ve springu
« Odpověď #6 kdy: 16. 10. 2018, 16:35:08 »
Díky ;).
Měl bych ještě jeden dotaz. V praxi - využívá se konfigurace přes xml/anotace/spring-boot?
Musím říct, že pote co jsem zjistil, jak je otravné nastavovat všechno to nastavení , tak jsem od toho chtěl utect, pak jsem vyzkoušel spring boot a kdyz se člověk může soustředit pouze na to programování, je to super.

Pokud nemas specialni pozadavky, neni duvod nepouzit Spring Boot.
3rd party tartery nemusis pouzivat, je to jenom nadstavba.

Jinak pro konfiguraci se pouzivaji anotace v tvem kodu, application.yml pro spring boot related veci a konfiguracni classes pro knihovny.
Hlavni vyhoda konfiguracnich classes je, ze (pokud autor neni debil, co vyuziva konfiguracni class pro predavani hashmapy konfig atributu) te to vede ke spravne konfiguraci.
U XML jsem casto skoncil ve stavu, ze proste kurvafix se mi vracel null bean a v logu ani slovo. Konfiguracni class ti vetsinou rozumne rekne, co ji vadi.

Youda

Re:Příklady backendu ve springu
« Odpověď #7 kdy: 16. 10. 2018, 16:35:59 »
s/tartery/startery/

balki

Re:Příklady backendu ve springu
« Odpověď #8 kdy: 16. 10. 2018, 17:53:58 »
Takže třeba xml se stále reálně používá? :O

Ono, ked z nejakeho dovodu potrebujes oddelit konfiguraciu komponentov od kodu a k tomu ju povedzme este externalizovat, tak je to vhodna cesta. Samozrejme, realne som  potreboval take nieco len raz. Inac nevidim zmysel to tak robit.

Alebo dalsia moznost je, ked chce mat niekto konfiguraciu na ociach na jednom mieste. Este to ale nikto nechcel.

Youda

Re:Příklady backendu ve springu
« Odpověď #9 kdy: 17. 10. 2018, 02:09:13 »
Takže třeba xml se stále reálně používá? :O

Ono, ked z nejakeho dovodu potrebujes oddelit konfiguraciu komponentov od kodu a k tomu ju povedzme este externalizovat, tak je to vhodna cesta. Samozrejme, realne som  potreboval take nieco len raz. Inac nevidim zmysel to tak robit.

Alebo dalsia moznost je, ked chce mat niekto konfiguraciu na ociach na jednom mieste. Este to ale nikto nechcel.

XML se uz nepouziva  je nahrazen @Configuration classama.

Re:Příklady backendu ve springu
« Odpověď #10 kdy: 17. 10. 2018, 07:23:24 »
Měl bych ještě jeden dotaz. V praxi - využívá se konfigurace přes xml/anotace/spring-boot?
Používá se všechno, u starších aplikací, které vznikaly v době, kdy nebyla jiná možnost, než XML konfigurace, není potřeba to přepisovat – a Spring Boot se tam ani nepoužívá (protože v té době neexistoval, a dnes už není důvod ho tam přidávat, když je vše nakonfigurované i bez něj). A nějaký způsob konfigurace (XML, anotace nebo Java konfigurace – na tu jste zapomněl) se používá i se Spring Boot. Ten totiž jenom přidává smysluplné defaulty, ale jinak interně používá také kombinaci anotací a konfigurace v Javě.

Pokud se Springem začínáte, doporučuji Spring Boot používat a svou konfiguraci dělat pomocí anotací (jednoduchá statická konfigurace) a Java kódu (tam, kde je potřeba nějaká složitější logika). Musíte pak ale počítat s tím, že je komplikovanější ty defaulty Spring Bootu změnit – nejenom, že musíte znát, jak se daná věc nakonfiguruje ve Springu, ale ještě navíc musíte vědět, jak správně vypnout příslušnou autokonfiguraci ve Spring Bootu. Tím „správně“ myslím např. to, aby vámi dodaná beana nahradila tu automaticky vytvářenou Spring Bootem, protože na ní třeba závisí další automaticky vytvářené beany Spring Bootu, a ty už chcete ponechat v defaultním nastavení.

balki

Re:Příklady backendu ve springu
« Odpověď #11 kdy: 17. 10. 2018, 10:17:41 »
Takže třeba xml se stále reálně používá? :O

Ono, ked z nejakeho dovodu potrebujes oddelit konfiguraciu komponentov od kodu a k tomu ju povedzme este externalizovat, tak je to vhodna cesta. Samozrejme, realne som  potreboval take nieco len raz. Inac nevidim zmysel to tak robit.

Alebo dalsia moznost je, ked chce mat niekto konfiguraciu na ociach na jednom mieste. Este to ale nikto nechcel.

XML se uz nepouziva  je nahrazen @Configuration classama.

Dakujem, bez vas by som to nevedel.

Youda

Re:Příklady backendu ve springu
« Odpověď #12 kdy: 17. 10. 2018, 10:36:40 »
Takže třeba xml se stále reálně používá? :O

Ono, ked z nejakeho dovodu potrebujes oddelit konfiguraciu komponentov od kodu a k tomu ju povedzme este externalizovat, tak je to vhodna cesta. Samozrejme, realne som  potreboval take nieco len raz. Inac nevidim zmysel to tak robit.

Alebo dalsia moznost je, ked chce mat niekto konfiguraciu na ociach na jednom mieste. Este to ale nikto nechcel.

XML se uz nepouziva  je nahrazen @Configuration classama.

Dakujem, bez vas by som to nevedel.

Prosim, rado se stalo.

A co se tyce XML/@Configuration externi konfigurace, jejim hlavnim ucelem je konfigurace 3rd party knihoven do kterych nechci zasahovat a ke kterym ani nemusim mit zdrojak.

balki

Re:Příklady backendu ve springu
« Odpověď #13 kdy: 17. 10. 2018, 10:54:58 »
Prosim, rado se stalo.

A co se tyce XML/@Configuration externi konfigurace, jejim hlavnim ucelem je konfigurace 3rd party knihoven do kterych nechci zasahovat a ke kterym ani nemusim mit zdrojak.

Ak externalizujem konfigurak, je mozne spravit rekonfiguraciu komponentov bez toho, aby som nieco kompiloval. V pripade, ze aplikacia je napisana ako skladacka, je xml-ko mozna cesta. (Pripadne by sa dala konfiguracia komponentov ulozit do databazy. Take nieco sa pouziva v jednej appke, co udrziavam, ale je to custom framework, nie spring. Ale v springu predpokladam, ze to tiez ide.)

Dakujem za rady, cenim si to.

Youda

Re:Příklady backendu ve springu
« Odpověď #14 kdy: 17. 10. 2018, 11:13:15 »
Prosim, rado se stalo.

A co se tyce XML/@Configuration externi konfigurace, jejim hlavnim ucelem je konfigurace 3rd party knihoven do kterych nechci zasahovat a ke kterym ani nemusim mit zdrojak.

Ak externalizujem konfigurak, je mozne spravit rekonfiguraciu komponentov bez toho, aby som nieco kompiloval. V pripade, ze aplikacia je napisana ako skladacka, je xml-ko mozna cesta. (Pripadne by sa dala konfiguracia komponentov ulozit do databazy. Take nieco sa pouziva v jednej appke, co udrziavam, ale je to custom framework, nie spring. Ale v springu predpokladam, ze to tiez ide.)

Dakujem za rady, cenim si to.

Kdyz muzu, pomuzu.

XML je samozrejme cesta, ted (tak 7 let zpet) se stejna funkcionalita nahrazuje @Config classama.
https://www.mkyong.com/spring3/spring-3-javaconfig-example/

Dosahnes tim to same co XML a ma to spoustu moznosti navic, da se jednoduseji kontrolovat spravnost zadane konfigurace apod.