2013-10-07 2 views
2

В одном из моих классов обслуживания я некоторые методы аннотированный как таковой:Spring @Transactional значение парам с SPEL (весна языка выражение)

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

Я недавно узнал о @value с силой Спринг EL, чтобы получить некоторые значения хранятся в файле свойств. , такие как

@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! 

Это то, что я пытаюсь даже поддерживаются весной?

Что я могу сделать, чтобы получить значение my.db.name внутри этого @Transactional аннотации

Благодаря

ответ

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 
+0

ОК спасибо. Nevermind в любом случае ... значение, которое я использовал в аннотации @Transaction, было именем квалификатора менеджера транзакций .., а не именем базы данных (которые, кстати, были одинаковыми ...) :) Спасибо – azpublic

Смежные вопросы