2

私のサービスクラスの1つに、次のように注釈が付けられたいくつかのメソッドがあります。

@Transactional(value="foodb")
public Bar getMeSomething(){
}

私は最近、プロパティ ファイルに格納された値を取得する Spring EL の機能を使って @Value について学びました。そのような

@Value("${my.db.name}")

これは魅力のように機能します。

今、私は同じことをしようとしています

@Transactional(value="${my.db.name}") 

成功せずに...

次の例外が発生します。

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named '${my.db.name}' is defined: No matching PlatformTransactionManager bean found for qualifier '${my.db.name}' - neither qualifier match nor bean name match!

私がやろうとしていることはSpringでもサポートされていますか?

その @Transactional アノテーション内の my.db.name 値を取得するにはどうすればよいですか

ありがとう

4

1 に答える 1

3

いいえ、サポートされていません。

これは org.springframework.transaction.annotation.SpringTransactionAnnotationParser からの抜粋です

public TransactionAttribute parseTransactionAnnotation(Transactional ann) {
    RuleBasedTransactionAttribute rbta = new RuleBasedTransactionAttribute();
    rbta.setPropagationBehavior(ann.propagation().value());
    rbta.setIsolationLevel(ann.isolation().value());
    rbta.setTimeout(ann.timeout());
    rbta.setReadOnly(ann.readOnly());
    rbta.setQualifier(ann.value()); // <<--- this is where the magic would be
    // if it was there, but it isn't
于 2013-10-07T10:19:54.563 に答える