我有一个预选赛,我从那里读
public class TestController{
@Autowired
@Qualifier("jdbc")
private JdbcTemplate jtm;
//.....
}
限定词“jdbc”是定义为
@Bean(name = "jdbc")
@Autowired
public JdbcTemplate masterJdbcTemplate(@Qualifier("prod") DataSource prod) {
return new JdbcTemplate(prod);
}
这是返回该限定符的数据源并可以正常工作的函数。
现在,我想将限定符名称从application.properties中读取。所以我将代码更改为
public class TestController{
@Autowired
@Qualifier("${database.connector.name}")
private JdbcTemplate jtm;
//.....
}
在我的application.properties中的
database.connector.name=jdbc
中。但是当我这样做时会引发错误
任何帮助表示赞赏。
最佳答案
限定词不解析占位符。您可以将TestController
类写为
public class TestController {
@Value("${database.connector.name}")
private String name;
private JdbcTemplate jtm;
@Autowired
public void setJdbcTemplate(ApplicationContext context) {
jtm = (JdbcTemplate) context.getBean(name);
}
}
关于java - 如何在 Spring 启动时从属性文件读取限定符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50208018/