Web

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 6

Lekcija 1.

Šta predstavlja Spring Framework?


Spring okvir (Spring Framework) predstavlja Java platformu koja obezbeđuje obimnu
infrastrukturnu podršku za razvoj širokog spektra Java aplikacija. Spring omogućava kreiranje
aplikacija iz POJO (plain old Java objects) objekata i primenu složenih (enterprise) servisa na
POJO objekte.
Koje benefite ima programer kada koristi Spring okvir kao platformu za razvoj Java
aplikacija?
 Izvršavanje Java metoda kroz transakciju sa bazom podataka bez potrebe za
rukovanjem konkretnim API-jem za transakcije;
 Kreiranje HTTP krajnje tačke (HTTP endpoint) lokalne Java metode bez potrebe za
rukovanjem konkretnim Servlet API;
 Kreiranje rukovalaca poruka (message handler ) lokalne Java metode bez potrebe za
rukovanjem konkretnim JMS API;
 Kreiranje upravljačkih operacija (management operation) lokalne Java metode bez
potrebe za rukovanjem konkretnim JMX API.
U čemu se ogleda zavisnost komponenata Java programa?
Zavisnosti mogu biti direktne (Aplikacija zavisi od Spring okvira tokom vremena izvršavanja) ili
indirektne (npr. Aplikacija zavisi od komponente commons-decbp koja zavisi od commons-
pool)
Šta je IoC?
Inverzija kontrole Spring okvira (Spring Framework Inversion of Control (IoC) ) predstavlja
komponentu koja rešava problem nedostatka mehanizma za organizovanje blokova kroz
obezbeđivanje formalizovanih mehanizama uklapanja komponenata u funkcionalnu celinu.
U koje celine su grupisani Spring moduli?
• Core Container
• Data Access/Integration
• Web
• AOP (Aspect Oriented Programming)
• Instrumentation
• Messaging
• Test.
Šta je Core kontekner? Koji moduli ga sačinjavaju?
Core container je osnovni kontejner. Sačinjavaju ga sledeći moduli:
• spring-core I spring-beans – obezbeđuju fundamentalne delove Spring okvira, kao što su
inverzija kontrole (IoC) i umetanje zavisnosti.
• spring-context- nasleđuje vlastite alate iz modula Beans I uvodi podršku za
internacionalizaciju, rad sa događajima, učitavanje resursa, transparentno kreiranje konteksta,
itd. Takođe podržava Java EE alate kao što su: EJB, JMX i rad sa udaljenim resursima. Interfejs
ApplicationContext je centralni deo Context modula.
• spring-context-support - obezbeđuje podršku za integrisanje biblioteka "treće strane" u
kontekst Spring aplikacije za: keširanje (EhCache, Guava, JCache), rad sa porukama (JavaMail),
organizovanje (CommonJ, Quartz) i mehanizme rada sa šablonima (FreeMarker, JasperReports,
Velocity)
• spring-expression (Spring Expression Language) - obezbeđuje jezik izraza Spring Expression
Language (SpEL) za kreiranje upita i manipulisanje šemom objekata tokom vremena izvršavanja
aplikacije.
Koji moduli čine AOP kontejner?
• spring-aop obezbeđuje implementaciju aspektno - orijentisanog programiranja
dozvoljavajući definisanje presretača metoda (interceptors) i tačaka prekida (pointcuts) za
jasno razdvajanje programskog koda koji implementira funkcionalnosti koje moraju da budu
razdvojene
• spring-aspects obezbeđuje primenu aspektno - orijentisanog pristupa kroz integraciju sa
aspektno - orijentisanim okvirom AspectJ.
• spring-instrument obezbeđuje podršku za instrumentalizaciju klasa I implementaciju čitača
klasa (classloader) koji se koriste u izvesnom aplikativnom serveru
• spring-messaging obezbeđuje apstrakcije za rad sa porukama, poput: Message,
MessageChannel, MessageHandler, kao i druge koje predstavljaju osnovu za kreiranje
aplikacija baziranih na porukama(messaging-basedapplications).Modul,takođe,sadrži skup
anotacija za mapiranje (preslikavanje) poruka u metode
U čemu je razlika između modula spring-jdbc i spring-orm? UMESTO OVOGA LISTA MODULA
ZA PRISTUP PODACIMA I INTEGRACIJU
• spring-jdbc obezbeđuje JDBC nivo apstrakcije kojim je uklonjena potreba za JDBC
programiranjem i parsiranjem specifičnih kodova grešaka karakterističnih za sisteme baza
podataka različitih proizvođača.
• spring-tx daje podršku programskom i deklarativnom upravljanju transakcijama za klase koje
implementiraju specifične interfejse, kao i za sve POJO
• spring-orm obezbeđuje nivoe integracije za sve popularne API za objektno - relaciono
mapiranje (object-relational mapping APIs), uključujući JPA, JDO i Hibernate.
• spring-oxm obezbeđuje nivo apstrakcije za podršku implementacijama Object/XML
mapiranja, kao što su: JAXB, Castor, XMLBeans, JiBX i XStream.
• spring-jms (Java Messaging Service) sadrži alate za kreiranje i potrošnju porukauJava
sistemima
Koji moduli su zaduženi za kreiranje i održavanje Spring veb aplikacija?
• spring-web sadrži osnovne web-oriented alate poput funkcionalnosti deljenog postavljanja
datoteka (multipart file upload) i inicijalizacije IoC kontejnera pomoću Servlet osluškivača I veb
orijentisanog konteksta aplikacije.Takođe, sadrži i HTTP klijent i Spring veb alate za udaljenu
podršku.
• spring-webmvc sadrži implementaciju Springovih model - view - controller (MVC) i REST veb
servira za kreiranje i održavanje veb aplikacija. Spring MVC okvir obezbeđuje čisto razdvajanje
između koda modela domena I veb formi i dozvoljava integraciju sa svim ostalim alatima Spring
okvira.
• spring-websocket
• spring-webmvcportlet obezbeđuje MVC implementaciju u Portlet okruženju (veb aplikacije
poznate kao portali) koja se ogleda kroz spring-webmvc funkcionalnosti.
Koji je zadatak modula spring-test?
spring-test modul obezbeđuje mogućnost jediničnog (unit testing) i integracionog (integration)
testiranja Spring komponenata primenom okvira JUnit i TestNG. Modul obezbeđuje
konzistentno učitavanje Spring konteksta aplikacije (ApplicationContext) i keširanje ovog
konteksta. Modul, takođe, obezbeđuje takozvane mock objekte koji mogu biti upotrebljeni za
testiranje kreiranog koda u izolaciji.

Objasnite razlike između upravljanja zavisnostima i umetanja zavisnosti?


Da bi svi alati, neophodni za razvoj Spring aplikacije, bili dostupni u projektu koji se kreira,
potrebno je obezbediti sve neophodne biblioteke (u formi jar datoteka), koje će biti iskorišćene
tokom prevođenja aplikacije. Ove zavisnosti nisu virtuelne komponente koje se umeću (inject)
već predstavljaju fizičke resurse u sistemu datoteka projekta (file system). Proces upravljanja
zavisnostima uključuje lociranje ovih resursa, njihovo čuvanje i dodavanje u putanju klasa
(classpath).
Koje repozitorijume Spring komponenata poznajete?
• Maven Central - centralni repozitorijum kojeg Maven pretražuje i koji ne zahteva bilo kakvu
posebnu konfiguraciju. Većina opštih biblioteka od kojih zavisi Spring je dostupna iz Maven
Central repozitorijuma. Nazivi jar datoteka se ovde sreću u formi spring-*<version>.jar, a
Maven groupId je org.springframework;
• Javni Maven repozitorijum postavljen posebno za Spring. Nazivi datoteka u potpunosti
odgovaraju nazivima iz Maven Central repozitorijuma. Sadrži paket sa distribucionim zip fajlom
koji sadrži sve Spring jar datoteke okupljene na jednom mestu zbog lakšeg preuzimanja.
Šta su artifakti?
Artifakti su jar datoteke koje alat za upravljanje zavisnostima dodaje u aktuelni projekat jer
sadrži alate neophodne za njegovo kreiranje.
Šta je Logging i od kakvog je značaja za Spring?
Šta je Maven?
Maven je alat za upravljanje zavisnostima.
Objasnite BOM koncept?
Koja je poslednja "major" revizija Spring okvira?
Spring 4 je poslednja major verzija Spring okvira.
Koja globalna unapređenja donosi Spring 4?
Unapređeno iskustvo učenja za početnike , uklonjene zastarele klase i metode, Java 8 (takođe
Java 7 i Java 6) , Java EE 6 i Java EE 7, Groovy DSL za definisanje zrna, unapređenja osnovnog
(core) kontejnera, veb unapređenja, WebSocket, SockJS, STOMP Messaging i test unapređenja.
Koji tip revizije Spring okvira predstavlja Spring 4.1?
Spring 4.1 predstavlja manje (minor) ažuriranje okvira Spring 4.0 sa daljim unapređenjima.
Koja globalna unapređenja donosi Spring 4.1?
JMS (Java Messaging System) unapređenja, unapređenja keširanja(JCache), dalja veb
unapređenja, unapređenja za razmenu poruka za WebSocket (WebSocket Messaging) i dalja
unapređenja iz domena testiranja.
U kojim oblastima Spring 4.2 donosi unapređenja?
Na koje načine su uvedena unapređenja osnovnog (core) kontejnera?
Šta je alias?
Alias je alternativni naziv atributa anotacija.
Unapređenja koja donosi Spring 4.2 su najbrojnija iz oblasti testiranja. Navedite
najznačanija?
• Testovi sa JUnit osnovom sada mogu da budu izvršeni preko JUnit pravila umesto
SpringJUnit4ClassRunner
• Okvir Spring MVC Test sada obezbeđuje prvoklasnu podršku za HtmlUnit, uključujući i
integraciju sa Selenium WebDriver
• Novi alat za testiranje AopTestUtils omogućava programerima dobijanje reference na
osnovni ciljni objekat koji je skriven iza jednog ili više Spring poxy - ja
• ReflectionTestUtils sada podržava uzimanje i izmenu (setting and getting) statičkih polja,
uključujući i konstante
• Izvorno raspoređivanje (ordering) profila definicija zrna preko anotacije @ActiveProfiles
zadržano je sa ciljem podrške raznim scenarijima primene (use cases), poput
ConfigFileApplicationListener (Spring Boot) koji učitava konfiguracione datoteke na osnovu
naziva aktivnih profila.
• Anotacija @DirtiesContext podržava nove režime BEFORE_METHOD, BEFORE_CLASS i
BEFORE_EACH_TEST_METHOD za zatvaranje konteksta aplikacije (ApplicationContext) pre
testa — na primer, ukoliko neki test, među velikim brojem testova koji se izvršavaju, ošteti
originalnu konfiguraciju za ApplicationContext., moguće je primeniti novu anotaciju @Commit
kao direktnu zamenu za @Rollback(false).
• Anotaciju @Rollback je sada moguće upotrebiti za podešavanje podrazumevane povratne
(rollback) semantike na nivou klasa. Kao posledica, primena anotacije
@TransactionConfiguration je sada prevaziđena i biće uklonjena.
• Anotacija @Sql sada podržava izvršavanje poređanih (inlined) SQL upita pomoću novog
atributa statements.
• Modul ContextCache, korišćen za keširanje konteksta aplikacije između testova, sada je javni
(public) API sa podrazumevanom implementacijom koja može, po potrebi, biti zamenjena u
zavisnosti od korisničkih potreba keširanja.
• DefaultTestContext, DefaultBootstrapContext i DefaultCacheAwareContextLoaderDelegate
sada su javne klase.
• TestContextBootstrapper je sada odgovoran za kreiranje TestContext - a.

Koja globalna unapređenja donosi Spring 4.3?


Kako Spring 4.3 unapređuje Core kontejner?
Koja su unapređenja podrške za testiranje?
Da li Spring 4.3 uvodi podršku za nove biblioteke i generacije servera? Prodiskutujte!

Koje novitete nudi Spring 5.0?


Šta je novo u okviru Spring Boot 2.0?

Šta je pom.xml i koji je zadatak ove datoteke?

Lekcija 2.
Šta predstavlja inverzija kontrole?
Inverzija kontrole (eng. Inversion of Control) predstavlja princip softverskog inženjerstva
prema kojem je kontrola programskih objekata pomerena ka kontejneru ili radnom okviru
(eng. framework). Inverzija kontrole (skraćeno IoC) omogućava okviru da preuzme kontrolu
nad tokom programa i da vrši pozive u okviru kreiranog koda.
Šta je IoC kontejner i koji je njegov zadatak?
IoC kontejner je centralni deo Spring okvira. Izgrađen je od: jezgra, zrna, konteksta aplikacije i
jezika izraza.
Objasnite koncept umetanja zavisnosti?
Umetanje zavisnosti (eng. Dependency injection - DI) predstavlja šablon (eng. pattern) kroz koji
se implementira IoC, gde se inverzija kontrole dešava preko podešavanja zavisnosti objekata.

Koji zadatak imaju interfejsi, a koji implementacione klase?


Na koje načine je moguće obaviti umetanje zavisnosti u Springu?
Preko polja, konstruktora I setera.
Šta je ApplicationContext?
ApplicationContext je interfejs koji je odgovoran za rukovanje zrnima. ApplicationContext ima
za zadatak instanciranje, podešavanje I povezivanje objekata.
Koje implemnetacije konteksta aplikacije poznajete?
ClassPathXmlApplicationContext , FileSystemXmlApplicationContext i WebApplicationContext.
Kako se instancira kontekst aplikacije kada se koriste XML konfiguracije?
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Kako se instancira kontekst aplikacije kada se koriste Java konfiguracije?
ApplicationContext context = new
AnnotationConfigApplicationContext(ApplicationConfig.class);

Umetanje zavisnosti u Springu preko konstruktora, objasnite.


IOC kontejner poziva konstruktor čiji argumenti reprezentuju zavisnosti koje je neophodno
podesiti.
Umetanje zavisnosti u Springu preko setter-a, objasnite.
IOC kontejner pozva setter metode kreirane klase, nakon pozivanja podrazumevanog (bez
argumenata) konstruktora ili statičkih (bez argumenata) produkcionih (eng. factory) metoda
kojima se kreiraju instance zrna.
Umetanje zavisnosti preko polja klase, objasnite?
Objekat koji se injektuje jednostavno se obeležava anotacijom @Autowired.
Šta predstavlja automatsko povezivanje zavisnosti? Kako se realizuje? Da li ovaj pristup ima
nedostatke?
Povezivanje (eng. wiring) omogućava Spring kontejneru da automatski reši (eng. resolve)
zavisnosti između zrna koja sarađuju putem provere definisanih zrna. Koristi se notacija
@Autowired.

Opisati upotrebe anotacija @Component, @Repository, @Service i @Controller.


@Component anotacijom se obeležava Java klasa kao zrno i na taj način je omogućen
mehanizam skeniranja komponenata (eng. component scanning) koji će u strukturi projekta
pronaći zrno, preuzeti ga i učitati u kontekst aplikacije.
@Repository je anotacija koja obezbeđuje dopunske funkcionalnosti, pogotovo ako se koristi
sa objektima koji manipulišu podacima.
@Service anotacija ističe servisni nivo projekta i time bolje opisuje nameru klase.
@Controller je specijalni oblik @Component anotacije koji omogućava zrnima da budu
automatski učitana u IoC kontejner.
Po čemu se razlikuje primena anotacija @Component, @Repository, @Service?
@Component je generalizovana anotacija java classa kao bean. @Repository anotacija
dodaje funkcionalnosti objektima koji rade sa podacima. @Service anotacija nema
dodatnih funkcionalnosti ali se koristi za opis servisnog dela projekta.
Kako se vrši pretraga (skeniranje) komponenata u Spring aplikaciji?
Pretraga se vrši pomoću anotacije @Component scan koja funkcioniše tako što Java klasu
obeleži kao zrno i na taj način omogućava mehanizam skeniranja komponenata (eng.
component scanning) koji će u strukturi projekta pronaći zrno, preuzeti ga i učitati u kontekst
aplikacije.

Kako se instancira kontekst aplikacije iz XML konfiguracionih fajlova?


ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
Kako se inicijalizuju zrna u XML konfiguracijama?
Instanciranje zrna u Spring programu moguće je obaviti kroz konfiguracionu datoteku zrna,.
Datoteka, po osnovnim Spring podešavanjima, trebalo bi da se nalazi na lokaciji
src/main/resources. <bean id="item1" class="com.metropolitan.store.ItemImpl1" lazy-
init="true" />
Zašto objekat učitan iz konteksta aplikacije mora da bude eksplicitno preveden u
odgovarajući tip?
Ako se ne zada eksplicitno naziv bean-a, on ce podrazumevano odgovarati nazivu
odgovarajuce metode.
Lekcija 3
Kako se u konfiguracionoj datoteci obezbeđuje podrška za primenu AspectJ anotacija?
Koje zavisnosti se odnose na APO podršku?

Koje AspectJ anotacije poznajete?


Objasnite pojedinačne AspectJ anotacije.
Šta je savet?

Šta je JoinPoint?
Kako aspekt može da pristupi detaljima tačke unije?

Na koje načine je moguće odrediti prioritete između aspekata?

Šta je pointcut?
Kako je moguće višestuko koristiti definiciju presečne tačke?

Šta je AspectJ Pointcut Language?


Koje šablone za potpisivanje metoda poznajete?
Kako se pretražuju tačke dodira po tipu?

Šta je Introduction?
Kako se Introduction implementira?

Šta je implementaciona klasa i koja joj je namena?

Šta je alternativa anotacijskom obeležavanju aspekata u Spring aplikacijama?

Šta je upredanje?
Objasnite dva tipa upredanja?

Koja je namena metode aspectOf()?

Kako se povezju objekti kreirani izvan Spring IoC kontejnera sa Spring zrnima?
Objasnite povezivanje pomoću ID zrna?

You might also like