6

私は単純なことをしようとしています。修飾されたString(またはFile) を CDI に挿入します。

だから私は修飾子を持っています:

@Retention(RetentionPolicy.RUNTIME)
@Target({FIELD,METHOD,PARAMETER,TYPE})
@Qualifier
public @interface FilesRepositoryPath {}

私はプロデューサーを持っています:

public class FilesRepositoryPathProducer {

  @Produces
  @FilesRepositoryPath
  public String getRepositoryDirectory() {
    return "path.taken.from.configuration";
  }
}

そして、私はそれを使用しようとしています:

@ApplicationScoped
public class FilesRepository {

  @Inject
  public FilesRepository(@FilesRepositoryPath String filesDirectory) {
    //Do some stuff
  }
}

ただし、WELD はこの Bean をインスタンス化できません。例外が発生しています:

org.jboss.arquillian.impl.event.FiredEventException: org.jboss.weld.exceptions.UnproxyableResolutionException: WELD-001410 The injection point [field] @Inject private za.co.fnb.commercial.dms.file.FilesRepositoryBeanTest.repo has non-proxyable dependencies

プロキシできないことはわかってStringいますが、なぜ WELD がプロキシを作成したいのですか? スコープが@Dependentあるため、とにかくプロキシを作成しないでください。どうすればそれを機能させることができますか?

4

1 に答える 1

3

デフォルトのコンストラクターが必要です

@ApplicationScoped
public class FilesRepository {

  public FilesRepository() {
  }

  @Inject
  public FilesRepository(@FilesRepositoryPath String filesDirectory) {
    //Do some stuff
  }
}
于 2013-04-29T18:54:32.920 に答える