我有个简单的问题。(对我来说有点奇怪)
我有一颗豆子在下面。
@Configuration
public class ConfigurationBean {
@Bean
public Config getConfig() {
return ConfigFactory.load();
}
@Bean
public Map<String, String> tableMap(Config config) {
return config.getObject("tables").unwrapped().entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().toString()));
}
@Bean
public String url(Config config) {
return config.getString("url");
}
}
和我的服务类;
@Component
public class TableService {
private final Map<String, String> tableMap;
private final String url;
private Connection connection;
private final TableToJsonConverter tableToJsonConverter;
@Autowired
public TableService(TableToJsonConverter tableToJsonConverter,
String url,
Map<String, String> tableMap) {
this.url = url;
this.tableMap = tableMap;
this.tableToJsonConverter = tableToJsonConverter;
}
因此,方案是url
bean返回值www.google.com
。tableMap
bean返回newGame:new_game_table,oldGame:old_game_table
现在,我希望在TableService
的构造函数中将map注入到map,将string注入到string。
我有点迷惑不解,能不能请你告诉我这里发生了什么事?
先谢谢你。
1条答案
按热度按时间yshpjwxd1#
这是预期的行为。Spring支持接受集合类型以传入多个bean。因此
List<MyPojo>
将注入所有MyPojo bean的列表。在您的示例中,Spring正在注入bean名称/字符串值,因为这是Map<String, String>
。你不需要为bean命名,默认的bean名是方法名。在这种情况下,限定符是一个有效的解决方法。