/ / Czy CDI działa dla zwykłej aplikacji Java? - java, cdi

Czy CDI działa dla zwykłej aplikacji Java? - java, cdi

Mam prosty projekt maven z trzema klasami. W moim META-INF Mam swoje puste beans.xml. Za każdym razem, gdy prowadzę Main.java dostałem NullPointerException.

Exception in thread "main" java.lang.NullPointerException
at hom.World.helloWorld(World.java:12)
at hom.Main.main(Main.java:6)

Czy to, co próbuję osiągnąć, jest poza zakresem tego, co powinien robić CDI?

Hello.java

package hom;
import javax.enterprise.inject.Default;

@Default
public class Hello {
public String hello() {
return "Hello ";
}
}

World.java

package hom;
import javax.enterprise.inject.Default;
import javax.inject.Inject;

@Default
public class World {
@Inject
Hello hello;

public String helloWorld() {
return hello.hello() + "World!";
}
}

Main.java

package hom;
public class Main {
public static void main(String[] args) {
World helloWorld = new World();
System.out.println(helloWord.helloWorld());
}
}

Odpowiedzi:

9 dla odpowiedzi № 1

Możliwe jest użycie CDI w samodzielnej aplikacji.

Weld weld = new Weld();
WeldContainer container = weld.initialize();
World helloWorld = container.instance().select(World.class).get();
System.out.println(helloWorld.helloWorld());
weld.shutdown();

Będziesz także potrzebować zależności zgrzewania.

<dependency>
<groupId>org.jboss.weld.se</groupId>
<artifactId>weld-se-core</artifactId>
<version>2.2.4.Final</version>
</dependency>

Zobacz też Dokumentacja spawalnicza w temacie.