2016-05-21 7 views
-1

Ich versuche, eine Java EE-Anwendung mit @Named Komponente zu erstellen.Kann ich auf eine benannte Java-Bean zugreifen?

Aber aus einigen Gründen muss ich auf diese benannte Java-Bean-Methoden von einer anderen Java-Bean zugreifen. Wie kann ich es tun? Sollte ich @Inject Annotation verwenden?

Ich weiß nicht, welches Tag hinzugefügt werden soll. Bitte bearbeiten Sie die Frage bei Bedarf.

Antwort

0

Ja, die Annotation @Inject kann verwendet werden, um die Bean MyNamedBean in eine andere Bean zu injizieren, und dann von der injizierten Bean auf die gewünschte Methode zuzugreifen.

Beispiel:

Zoo.java

import javax.inject.Inject; 

public class Zoo { 

    @Inject 
    private Dog dog; 

    public Zoo() { 
    } 

    public void talk() { 
     dog.talk(); 
    } 
} 

Dog.java

import javax.inject.Named; 
import javax.inject.Singleton; 

@Named 
@Singleton // optional 
public class Dog { 

    public void talk() { 
     System.out.println("wowowo~ ฅ^•ﻌ•^ฅ"); 
    } 
} 
+0

Zoo muss auch eine Bohne, nicht wahr? –

+0

Gute Frage, ich weiß nicht ... @PeterRader –

+1

Im Frühjahr CDI (ich bin mir sicher) muss es eine Bean sein (im selben Umfang oder same-scoped-proxy) oder es muss manuell vom Kontext autowired werden. –