Hlavní menu
Nástroje |
Parkoviste ve SpringuV tomto tutoriálu se používá SpringSource Tool Suite. V tomto případě by nemělo moc smysl procházet všechny části implementace, protože je k dispozici implementace. Zaměřím se tedy hlavně na konfigurační soubor springu a eventy. Nastavení beanů v BeanDefinition?.xmlZatím jsem použil jen jeden typ dependency injection a to ten následující: <bean id="KonfiguraceZarizeni" class="cz.zcu.kiv.cosi.parkoviste.konfigurace.KonfiguraceZarizeni"> <property name="frekvence"> <value>50</value></property> <property name="kapacita"> <value>15</value></property> </bean> V tomto případě nastavíme parametry beany pomocí metod Druhým způsobem dependency injection je vložení parametrů přímo do konstruktoru. Můžu injektovat vytvořené beany, pomocí reference. Ale můžu injektovat i jednoduché datové typy pomocí <bean id="Parkoviste" class="cz.zcu.kiv.cosi.parkoviste.parkoviste.Parkoviste"> <constructor-arg type="cz.zcu.kiv.cosi.parkoviste.IKonfigurace"> <ref bean="KonfiguraceZarizeni"/></constructor-arg> </bean> Eventy ve SpringuSpring zastává zaběhlý a dobrý model. 1) Implementace vlastního objektu Event (rozšířením existujícího), který se bude posílat 2) Implementace rozhranní, abychom mohli eventy vyvolávat 3) Implementace jiného rozhranní, abychom mohli eventy přijímat Vlastní jednoduchá eventaVytvoření eventy je jednoduché. Musí rozšiřovat třídu ApplicationEvent?. Se zbytkem pomůže SpringSource? Tool Suite. Doplní UID, vytvoří prázdný konstruktor. Další parametry konstruktoru, či další přenášené informace touto eventou jsou již jen na nás. public class ParkovisteZbyvaEvent extends ApplicationEvent { private int volnaMista; private static final long serialVersionUID = -6274326312725528660L; public ParkovisteZbyvaEvent(Object source, int volnaMista) { super(source); this.volnaMista = volnaMista; } public int getVolnaMista() { return volnaMista; } } Zveřejnění eventyTřída, která bude eventy zveřejňovat musí implementovat rozhranní Toto rozhranní bude požadovat implementaci metody, pro nastavení kontextu aplikace. @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.context = applicationContext; } A to je vše, co bylo třeba připravit. Spring se o vše postará sám, nyní stačí eventu zveřejnit pomocí metody context.publishEvent(new ParkovisteZbyvaEvent(this, volnaMista)); Příjem eventyAby mohla třída eventy přijímat musí implementovat rozhranní Toto rozhranní bude požadovat implementaci metody Pro rozpoznání typu eventy je dobré použít testovací podmínku @Override public void onApplicationEvent(ApplicationEvent event) { if (event instanceof ParkovisteZbyvaEvent) { ParkovisteZbyvaEvent parkovisteZbyvaEvent = (ParkovisteZbyvaEvent) event; System.out.println("(Pult) Volna mista: " + parkovisteZbyvaEvent.getVolnaMista()); } else if (event instanceof ParkovistePlneEvent) { System.out.println("(Pult) Parkoviste je plne!"); } } |