Java SE 和 Weld?

标签 java dependency-injection weld

我目前正在测试 Java SE 的 CDI 2.0( Weld ) - 我读到,没有必要使用 beans.xml,所以我尝试了这个:

Hallo.class:

public class Hallo {

   public String sayHallo() {
      return "hallo";
   }
}

然后我有一个 Test.class:

@ApplicationScoped
public class Test {

@Inject Hallo hallo;

   public String sayHallo() {
      return hallo.sayHallo() + " from Test";
   }
}

最后我尝试使用 CDI:

public class Demo {

public static void main(String[] args) {
    SeContainerInitializer initializer = SeContainerInitializer.newInstance();
    /** disable discovery and register classes manually */
    try (SeContainer container = initializer.disableDiscovery().addPackages(Demo.class).initialize()) {
        Test test = container.select(Test.class).get();
        test.sayHallo();
    }
}
}

不幸的是,它不起作用。我收到此消息:

Okt 10, 2018 2:22:04 PM org.jboss.weld.bootstrap.WeldStartup INFO: WELD-000900: 3.0.5 (Final)
Okt 10, 2018 2:22:05 PM org.jboss.weld.bootstrap.WeldStartup startContainer INFO: WELD-000101: Transactional services not available. Injection of @Inject UserTransaction not available. Transactional observers will be invoked synchronously.
Okt 10, 2018 2:22:05 PM org.jboss.weld.environment.se.WeldContainer fireContainerInitializedEvent INFO: WELD-ENV-002003: Weld SE container 5adc2948-acd7-423c-84dc-c1463534c309 initialized
Okt 10, 2018 2:22:05 PM org.jboss.weld.environment.se.WeldContainer shutdown INFO: WELD-ENV-002001: Weld SE container 5adc2948-acd7-423c-84dc-c1463534c309 shut down

我错过了什么?

提前致谢。

最佳答案

CDI 容器工作正常。
事务服务不可用表示您没有在事务管理器下运行,而事务管理器(几乎)默认情况下在应用程序服务器内运行。

关于Java SE 和 Weld?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52740430/

相关文章:

asp.net - 使用自定义成员资格提供程序进行依赖注入(inject)

java - Spring @Autowired 链和常规 'new XYZ()' 实例化

javascript - 仅针对一个 Controller 未定义 Angular 服务字段

java - WELD-001408 类型的不满足依赖关系...在注入(inject)点具有限定符 [@Default]

jakarta-ee - 如果通过 Provider.get() 获取 @Dependent 作用域的 CDI bean,何时会销毁该 bean?

java - 从依赖解析器中提取特殊节点

java - 以编程方式将项目 JAR 部署到 Artifact

java - 如何从一个输入答案中提取一定的信息

java - java ee 6 堆栈与 spring 框架有什么区别?

java - 具有多个条件的长 if else 语句 - 如何替换它?