-
Couldn't load subscription status.
- Fork 38.8k
Closed
Labels
in: coreIssues in core modules (aop, beans, core, context, expression)Issues in core modules (aop, beans, core, context, expression)type: bugA general bugA general bug
Milestone
Description
Affects: 6.1.0
Code:
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@SpringBootApplication
public class Main implements CommandLineRunner {
@Configuration
public static class Config {
@Bean("qualifiedMap")
Map<String, Object> qualifiedMap() {
return Map.of("k1", "v1", "k2", "v2", "k3", "v3");
}
}
@Autowired
@Qualifier("qualifiedMap")
private Map<String, Object> qualifiedMap;
@Autowired
private ApplicationContext applicationContext;
@Override
public void run(String... args) {
System.out.printf("Autowired Bean: %s%n", qualifiedMap);
System.out.printf("Context Bean: %s%n", applicationContext.getBean("qualifiedMap", Map.class));
}
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
Output:
Autowired Bean: {qualifiedMap={k1=v1, k3=v3, k2=v2}}
Context Bean: {k1=v1, k3=v3, k2=v2}
When we mark a Map<String, Object> as @bean with a qualifier, @Autowired refers to a different map. The bean seems fine when directly fetched from the application context.
Metadata
Metadata
Assignees
Labels
in: coreIssues in core modules (aop, beans, core, context, expression)Issues in core modules (aop, beans, core, context, expression)type: bugA general bugA general bug