下面是演示该问题的代码。Class3具有Class2的自动生成字段,Class2具有Class1的自动生成依赖项,简单测试使用Class3获取Class1的String值。因此,在测试执行中,Class2不是空的,并被注入到Class3中,但是Class2中的Class1是空的。
@Component
class Class1{
private String str= "Some String";
//getter setter
}
@Component
class Class2{
@Autowired
Class1 class1;
//getter setter
}
@Component
class Class3{
@Autowired
Class2 class2;
//getter setter
}
public class TestClass{
@InjectMocks
Class3 class3;
@Spy
Class2 class2;
@Spy
Class1 class2;
@Test
public void simpleTest(){
String s = class3.class2.class1.getStr();
Assert.equals(s,"Some String");
}
}
这是因为您在Class2上添加了@Spy
注释,它使Class2成为一个mock而不是一个有效的springbean。
如果您想在这里获得Spring的DI,您必须使用@Autowired
和place获取bean
@RunWith(SpringRunner.class)
@SpringBootTest
在您的测试中使用实际上下文。
问题内容: 我正在开发一个小型Java EE Hibernate Spring应用程序,出现错误: 这是我的控制器ArticleControleur,其中包含用于恢复文章列表的功能: 这是我的articleService: 这是我的应用程序上下文: 问题答案: 该错误表明不是注册的Bean。添加其中包含将在你的应用程序上下文中自动装配的bean的软件包: 或者,如果你想将所有子包包括在com.bd
大家好,我收到下一个错误,我是使用Hibernate的新手
这是我的当前设置:ProjectRepo: ProjectService: ProjectRestController:
在下面这样一个简单的测试类中: AddressInfoLocalizer(很抱歉这个奇怪的名字,但我不得不虚构)基本上是这样的: 当调用(在测试中)addressInfoLocalizer时,我不断得到一个NullPointerException。本地化(ip) , 在调试时,我实际上可以看到addressInfoLocalizer对象是null。 我用同样的方法创建了其他类,但只有这个类似乎有这
问题内容: 我测试了我的DAO,但是没有用。发生以下错误: 我的DAO: 我对此DAO的测试: 我的 applicationContext.xml : 我注意到,如果您在DAO中评论@Transactional,则将正确创建bean。怎么了? 问题答案: 首先,将以Controller结尾的名称给DAO确实很令人困惑,Controller和DAO共同具有不同的目的。 当您添加到服务或dao类时,为
我有一个Spring Boot应用程序,它包含一个用户类——所有字段都有标准的JSR-303注释(@NotNull、@Size等),验证工作正常。 但是,当我向User添加自定义验证时,我无法将依赖项注入自定义验证器: @uniqueUsername注释声明为: 注释字段: 以及验证程序的用法: 问题是UserRepository在UniqueUsernameValidator中没有自动配置。字段