我有一个预选赛,我从那里读

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/

10-10 11:56