[Java] Referencje do zasobów

0

Witam

Przerabiam aktualnie tutorial Java EE.
Dotarlem do miejsca, gdzie opisywane sa adnotacje. Same adnotacje nieco poznalem i wiem, ze sa to po prostu metadane.
Interesuje mnie natomiast na na jakiej zasadzie dzialaja referencje do zasobow. W tutorialu pisze, ze poprzez adnotacje sa one wstrzykiwane do kodu.

@Resource javax.sql.DataSource catalogDS;
public getProductsByCategory() {
    // get a connection and execute the query
    Connection conn = catalogDS.getConnection();
    ..
}

Co to dokladnie oznacza? Ze catalogDS to jakby alias do javax.sql.dataSource? A jesli nawet to przeciez DataSource jest interfejsem wiec dlaczego jest wykonywana jego metoda.
Nie rozumiem tego kompletnie - prosze o wyjasnienie.

Pozdrawiam

0

Musi istnieć obiekt dostępny przez JNDI o nazwie catalogDS implementujący interfejs javax.sql.DataSource.
Serwer automatycznie przypisze do referencji catalogDS ten obiekt.
Jeżeli nie ma takiego obiektu, to wystąpi wyjątek.

Egzemplarz jakiej klasy został wstrzyknięty możesz zobaczyć przez catalogDS.getClass().getName().
Pamiętaj, że w Javie masz polimorfizm. Do referencji o typie interfejsu przypisana jest zawsze instancja jakiejś konkretnej (nieabstakcyjnej) klasy (lub null).

http://java.sun.com/javaee/5/docs/api/javax/annotation/Resource.html
http://onjava.com/pub/a/onjava/2006/01/04/dependency-injection-java-ee-5.html?page=1

1 użytkowników online, w tym zalogowanych: 0, gości: 1