在我的一个服务类中,我有一些注释方法:
@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值
由于
答案 0 :(得分: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