我有一个非常简单的Spring Boot测试应用程序。
它只有一个Dog类和一个@SpringBootApplication注释的类。我创建了两个豆子的狗和一切运行的预期。
public class Dog {
public String name;
public Dog() {
this("noname");
}
public Dog(String name) {
this.name = name;
}
public String toString() {
return name;
}
}
@SpringBootApplication
public class DemoApplication {
@Autowired
private List<Dog> dogs;
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Bean
CommandLineRunner runner1() {
return args -> {
for (Dog d : dogs) {
System.out.println(d);
}
};
}
@Bean
Dog laika() {
return new Dog("laika");
}
@Bean
Dog lassie() {
return new Dog("lassie");
}
}
产出:
laika
lassie
但是,现在我向Dog类添加了@Component注释,希望现在得到三个类型为Dog的bean,如果我用另一个CommandLineRunner打印所有bean,就会出现这种情况:
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
return args -> {
System.out.println("Let's inspect the beans provided by Spring Boot:");
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames) {
System.out.println(beanName);
}
};
}
Let's inspect the beans provided by Spring Boot:
applicationAvailability
applicationTaskExecutor
commandLineRunner
demoApplication
dog
laika
lassie
lifecycleProcessor
...
noname
似乎@component bean已经使@bean声明的bean dissapear用于集合注入。我观察到任何bean都有相同的行为,例如,如果我在一个独立的@Component类中声明了更多的CommandLineRunner,那么每个人都将运行,但是当我在一个列表中自动调用它们时,只有用@Component声明的才会被注入。
尽管如此,我仍然可以使用其他狗豆。例如,如果我用@primary注释Laika bean,它将作为方法参数注入,但对于@autowire的集合没有任何改变。
您的引导应用程序是一个有趣的方式,但无论如何,这PC的代码
@Bean
CommandLineRunner runner1() {
return args -> {
for (Dog d : dogs) {
System.out.println(d);
}
};
}
当它被调用时,其他两个狗还没有初始化,所以在狗列表中,您只有@component带注释的一个,它是“noname”。
我使用plugin scala为我的scala项目生成测试覆盖率报告。但是,我无法组合单元测试和集成测试的测试报告。 以下是我运行的命令 在上面的例子中,我只得到集成测试的覆盖率报告。 问题 如何生成一个报告来汇总单元测试和集成测试的结果 提前谢谢。
问题内容: 我在Employee类中有以下定义 现在,我想使用现有员工ID导入现有员工。即使在保存之前设置了员工ID,也会忽略分配的ID,并存储自动递增的ID。我们如何覆盖呢? 问题答案: 我编写了自己的生成器来解决此问题。 并像这样使用它:(替换包名)
我正在使用Java,我有一个JTextField,它只能有4位数字。我正在使用一个扩展DocumentFilter的类来过滤掉任何其他字符,并将字符数限制为4。 问题是,一旦我有了4个数字,如果我选择所有数字,并试图通过键入另一个数字来覆盖它们,它不会自动覆盖,也不会执行任何操作,我必须在键盘中显式键入“Backspace”或“Delete”以删除4个数字,然后(一旦字段清除),我可以再次键入。
问题内容: 我对react.js还是很陌生,并且正在通过构建砌体样式布局进行试验。 我将每个元素呈现给DOM,然后需要遍历每个项目并根据前面的元素应用x和y位置。 初始模型如下所示: (我只显示了一个项目以使内容简短)。 完成循环并获取x和y数据后,我想将其应用于podStyle对象。我用以下数据调用setState: 这似乎从模型中删除了所有当前数据,而只剩下了podStyle数据。我是否误解了
自从发布以来,我将大部分java测试代码从移到文件夹,因为JVM测试要快得多。但我不能移动所有的测试。我确实需要设备测试,因为有些的东西。 在我开始迁移之前,我已经有了100%的代码覆盖率。当我当前运行jacoco代码覆盖率时,文件夹的覆盖率为40%,文件夹的覆盖率为71%。我的代码是100%测试,但我没有报告证明这一点。 有没有办法把这两份报告结合起来?我找到了JacocoMerge,但无法让它
问题内容: 考虑以下类别: 在某些情况下,需要覆盖自动装配的注射,例如,当Spring无法找到单个注射候选物时。在XML中,我可以有以下示例: 有没有办法用Java Config做同样的事情?以下内容不起作用(我理解原因),因为Spring尝试从myBean方法返回后尝试自动装配该属性,并且该属性失败,并显示NoUniqueBeanDefinitionException: 修改MyBean类并不总