考虑以下与所创建的相同类型的两个豆配置:鉴于在编译过程中参数的名称会丢失,Spring如何通过参数名自动装入?
@Configuration
@ComponentScan(basePackageClasses = TwoStrings.class)
public class Config {
@Bean
public String one() {
return "one";
}
@Bean
public String two() {
return "two";
}
}
依赖于两个bean以上是由组分扫描创建另一个bean:
@Component
public class TwoStrings {
public final String a;
public final String b;
@Autowired
public TwoStrings(String one, String two) {
this.a = one;
this.b = two;
}
}
的局部变量/参数的名称编译过程中丢失,并且不可在运行时:
但是,Spring以某种方式正确地自动连接了两个String
bean。下面
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Config.class)
public class Example {
@Autowired
private TwoStrings twoStrings;
@Test
public void test() {
System.out.println(twoStrings.a);
System.out.println(twoStrings.b);
}
}
打印
one
two
示例性测试考虑的构造函数的参数名称都丢了,我希望春天抛出异常说,有超过1种豆String
型的,但是春天以某种方式使用参数名称自动装入bean。
问题是Spring如何知道构造函数参数的名称?
什么是调试标志编译?这不是虚拟机选项,对吧?我如何在IntelliJ中控制它? –
@JaroslawPawlak默认启用 - 在IntelliJ中,它可以在Settings \ Build,Execution,Deployment \ Compiler \ Java Compiler \中生成调试信息 – bedrin
Spring如何访问这些调试信息?它不能是反射API,对吧? –