来自 bean 的 JavaEE 扫描注释

JavaEE scan annotation from bean

我在我的项目中使用 javaee 8 并且有这个 类 :

public class PersonRepository {
    @Inject
    @Mongo(collection = "users")
    private MongoCollection collection;

    // define some methods ....
}     

@ApplicationScoped
public class MongoProducer {

    @Inject
    private MongoClient mongoClient;

    @Produces
    @Mongo
    protected MongoCollection produceCollection(InjectionPoint ip) {
        Mongo mongo = getMongoAnnotation(ip);
        return mongoClient.getDatabase("sample").getCollection(mongo.collection());
    }

    private Mongo getMongoAnnotation(InjectionPoint ip) {
        return ip.getAnnotated().getAnnotation(Mongo.class);
    }
}    

@MongoClientDefinition(
        name = "mongoClient",
        dbName = "sample",
        username = "admin",
        password = "adminpass"
)
public class MongoConnectionConfig {
}

不幸的是,mongoClient 没有任何方法来获取当前连接到它的数据库名称。 (也许我找不到!)
如何从 produceCollection 方法扫描 MongoClientDefinition 注释?
我想从该注释中设置数据库名称。 (替换 "sample").
注意:我为 MongoClientDefinition 创建了 CDI 扩展。

简单的想法是 BeanManager :
我修改了扩展名并为 dbName 添加了 getter 方法。
github

上的完整项目
@ApplicationScoped
public class MongoProducer {

    @Inject
    private MongoClient mongoClient;

    @Inject
    private BeanManager bm;

    @Produces
    @Mongo
    protected MongoCollection produceCollection(InjectionPoint ip) {
        String dbName = bm.getExtension(MongoClientExtension.class).getDatabaseName();
        Mongo mongo = getMongoAnnotation(ip);
        return mongoClient.getDatabase(dbName).getCollection(collectionName,mongo.collection());
    }

    private Mongo getMongoAnnotation(InjectionPoint ip) {
        return ip.getAnnotated().getAnnotation(Mongo.class);
    }
}