小编Yev*_*nyL的帖子

拦截使用@Produces方法创建的CDI bean

在我们的 JEE 应用程序中,我们创建了一个新注释@MyAnnotation,并将其设置在 CDI beans ( @ApplicationScoped ) 上。
然后我们有一个拦截器,它拦截所有带有@MyAnnotation注释的 bean 。
问题是它不适用于由@Produces方法创建的 bean。
这意味着拦截器没有被调用。

所以如果我们有这个类:

@ApplicationScoped
public class OtherClass
{
     @Inject
     private MyBean myBean;

     public void f()
     {
        myBean.g();
     }
}
Run Code Online (Sandbox Code Playgroud)

然后以下将起作用:

@ApplicationScoped
@MyAnnotation
public class MyBean
{
   public void g() {}
}
Run Code Online (Sandbox Code Playgroud)

但下面的不会:

@ApplicationScoped
public class MyBeanProducer 
{

    @Produces
    public MyBean create() 
    {
        return new MyBean();
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让拦截器拦截使用 @Produces 创建的 CDI bean?

interceptor cdi jakarta-ee

3
推荐指数
1
解决办法
395
查看次数

多线程中声明期间的静态变量初始化

我想将以下代码添加到我的班级中:

static private final ILogic_P logicInstanceI =
    (ILogic_P)Factory.CreateAnon("some.path.ILogic_P" + (SomeClass.isIMDB() ? "1" : "2"));

public static ILogic_P getLogicInstanceI(){
    return logicInstanceI;
}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚静态变量的初始化是否是线程安全的。两个线程是否有可能同时尝试初始化此属性?

java multithreading static-variables

2
推荐指数
1
解决办法
1081
查看次数