当前位置: 首页 > 知识库问答 >
问题:

初始化代码的CDIBean注入

吴丁雷
2023-03-14

我配置了一个bean,它有一些初始化逻辑。我已经使用@Application ationScoped注释注释了这个bean。但不知何故,cdi并没有选择这个豆子。

beans.xml内容:

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
    bean-discovery-mode="annotated">
</beans>

Bean文件:

@ApplicationScoped
public class Initializer{

    @Inject @ConfigProperty(name = "app.name")
    private String appName;
    @Inject @ConfigProperty(name = "app.token")
    private String appToken;
    @Inject @ConfigProperty(name = "app.version")
    private String appVersion;

    @PostConstruct
    public void init() {
       System.out.println("flow should come here....); //but this line does not execute.
    }
}

读取配置文件的代码:

@Exclude
public class ConfigurationFile implements PropertyFileConfig {

    @Override
    public String getPropertyFileName() {
    String env = Util.getEnv();
    switch (env) {
    case "dev":
    case "uat":
    case "prod":
        return "config/" + env + "/default.properties";
    default:
        return "config/default.properties";
    }
    }

    @Override
    public boolean isOptional() {
    return false;
    }
}

我使用:cdiL:进行依赖项注入,apachedeltaspike:读取配置文件。野蝇群:服务器

共有1个答案

施弘壮
2023-03-14

我已经有了解决这个问题的办法。

问题通过更改方法声明来解决,如下所示:

public void init(@Observes @Initialized(ApplicationScoped.class) Object init) {
//................code logic here................
}
 类似资料:
  • 在Servlet 3.0以上的环境下,你可以通过编程的方式来配置Servlet容器了。你可以完全放弃web.xml,也可以两种配置方式同时使用。以下是一个注册DispatcherServlet的例子: import org.springframework.web.WebApplicationInitializer; public class MyWebApplicationInitializer

  • 本文向大家介绍java对象初始化代码详解,包括了java对象初始化代码详解的使用技巧和注意事项,需要的朋友参考一下 本文主要记录JAVA中对象的初始化过程,包括实例变量的初始化和类变量的初始化以及final关键字对初始化的影响。另外,还讨论了由于继承原因,探讨了引用变量的编译时类型和运行时类型 一,实例变量的初始化 这里首先介绍下创建对象的过程: 类型为Dog的一个对象首次创建时,或者Dog类的s

  • 如何在GWT应用程序的服务器端进行一次初始化? 我可能想的很像,您可以重写,但旧习惯很快就会消失;) 我想做的是: > < li> 加载一组属性 建立与数据库的连接

  • 看完这些,, 在哪里使用EJB3.1和CDI 下面的事情我还不明白,如果我错了,请纠正我。 与bean在同一个包中的所有类。xml是CDIBean,除了注释为session/message/singleton的类之外 非常感谢。:)

  • Initialization 初始化 Although it doesn’t look superficially very different from initialization in C or C++, initialization in Go is more powerful. Complex structures can be built during initialization a

  • 初始化是为类、结构体或者枚举准备实例的过程。这个过需要给实例里的每一个存储属性设置一个初始值并且在新实例可以使用之前执行任何其他所必须的配置或初始化。 你通过定义初始化器来实现这个初始化过程,它更像是一个用来创建特定类型新实例的特殊的方法。不同于 Objective-C 的初始化器,Swift 初始化器不返回值。这些初始化器主要的角色就是确保在第一次使用之前某类型的新实例能够正确初始化。 类类型的