【问题标题】:Can I access a named java bean?我可以访问命名的 java bean 吗?
【发布时间】:2016-05-21 21:33:35
【问题描述】:

我正在尝试使用 @Named 组件创建 Java EE 应用程序。

import javax.inject.Named;

@Named
public class MyNamedBean {
    public int myMethod() { ... }
}

但由于某些原因,我需要从另一个 java bean 访问这个命名的 java bean 的方法。那么我该怎么做呢?我应该使用@Inject 注释吗?

我不知道应该添加什么标签。如果需要,请编辑问题。

【问题讨论】:

    标签: java cdi


    【解决方案1】:

    是的,注解@Inject 可以用来将bean MyNamedBean 注入到另一个bean,然后从注入的bean 中访问想要的方法。

    例子:

    动物园.java

    import javax.inject.Inject;
    
    public class Zoo {
    
        @Inject
        private Dog dog;
    
        public Zoo() {
        }
    
        public void talk() {
            dog.talk();
        }
    }
    

    狗.java

    import javax.inject.Named;
    import javax.inject.Singleton;
    
    @Named
    @Singleton // optional
    public class Dog {
    
        public void talk() {
            System.out.println("wowowo~ ฅ^•ﻌ•^ฅ");
        }
    }
    

    【讨论】:

    • 好问题,我不知道...@PeterRader
    • 在 Spring CDI 中(我确定)它必须是一个 Bean(在相同范围或相同范围的代理中),或者必须由上下文手动自动装配。
    猜你喜欢
    • 2014-02-04
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 2015-08-10
    • 2012-07-31
    • 1970-01-01
    • 2011-02-23
    • 2013-09-06
    相关资源
    最近更新 更多