Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么在Spring JUnit测试中使用@Autowired注释时会出现嵌套异常?_Java_Spring_Hibernate_Spring Data Jpa - Fatal编程技术网

Java 为什么在Spring JUnit测试中使用@Autowired注释时会出现嵌套异常?

Java 为什么在Spring JUnit测试中使用@Autowired注释时会出现嵌套异常?,java,spring,hibernate,spring-data-jpa,Java,Spring,Hibernate,Spring Data Jpa,我们开始在大学学习Spring,所以我们必须和JPA一起开发一个项目,所以我必须测试JPA是否正常工作。问题是我在执行测试时获得了这个跟踪 org.springframework.beans.factory.unsatifiedpendencyException:创建名为“persistence.DatabaseTest”的bean时出错:通过字段“uS”表示未满足的依赖关系; 嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinition

我们开始在大学学习Spring,所以我们必须和JPA一起开发一个项目,所以我必须测试JPA是否正常工作。问题是我在执行测试时获得了这个跟踪

org.springframework.beans.factory.unsatifiedpendencyException:创建名为“persistence.DatabaseTest”的bean时出错:通过字段“uS”表示未满足的依赖关系; 嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException: 没有“services.UserService”类型的合格bean可用:至少需要1个符合autowire候选条件的bean

我不确定是哪个元素引发了嵌套异常。这些是我的课程:

main.test.persistence.DatabaseTest

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
@IntegrationTest({"server.port=0"})
    public class DatabaseTest {
    private User u1, u2, u3, u4;
    @Autowired
    private UserService uS;

    @Before
    public void setUp(){
        //Here I initialize users but nothing like uS = whatever;
    }

    @Test
    public void testUser() {
        assertTrue(uS.findAll().size()==0);
        addUsers();
        assertTrue(uS.findAll().size()==4);
        assertTrue(uS.checkExists(u1.getId()));
        assertTrue(uS.checkExists(u2.getId()));
        assertTrue(uS.checkExists(u3.getId()));
        assertTrue(uS.checkExists(u4.getId()));
        deleteUsers();
        assertTrue(uS.findAll().size()==0);
    }

    private void addUsers(){
        uS.save(u1);
        uS.save(u2);
        uS.save(u3);
        uS.save(u4);
    }
}
main.java.services.UserService

public interface UserService {

    void save(User user);
    void delete(User user);
    boolean checkExists(Long id);
    List<User> findAll();
}
公共接口用户服务{
作废保存(用户);
作废删除(用户);
布尔校验存在(长id);
列出findAll();
}
main.java.services.impl.UserServiceImpl

@Service
public class UserServiceImpl implements UserService{

    @Autowired
    private UserRepository repository;

    @Override
    public void save(User user) {
        repository.save(user);
    }

    @Override
    public List<User> findAll() {
        List<User> users = new ArrayList<>();
        if (repository.findAll() != null) {
            Iterator<User> it = repository.findAll().iterator();
            while (it.hasNext())
                users.add(it.next());
        }
        return users;
    }

    @Override
    public void delete(User user) {
        repository.delete(user);
    }

    @Override
    public boolean checkExists(Long id) {
        return repository.findOne(id) != null;
    }

}
@服务
公共类UserServiceImpl实现UserService{
@自动连线
私有用户存储库;
@凌驾
公共作废保存(用户){
保存(用户);
}
@凌驾
公共列表findAll(){
列表用户=新建ArrayList();
if(repository.findAll()!=null){
迭代器it=repository.findAll().Iterator();
while(it.hasNext())
users.add(it.next());
}
返回用户;
}
@凌驾
公共作废删除(用户){
删除(用户);
}
@凌驾
公共布尔校验存在(长id){
返回存储库。findOne(id)!=null;
}
}
main.java.persistence.repositories.UserRepository

@Transactional
public interface UserRepository extends JpaRepository<User, Long> {

    public User findByEmail(String email);

}
@Transactional
公共接口用户存储库扩展了JpaRepository{
公共用户findByEmail(字符串电子邮件);
}

提前感谢。

它说,它无法注入Dependency private UserService uS。如果提供了@ComponentScan注释,是否可以签入Application.class?如果提供,请检查基本包装。如果不是,试着提供它。@LyjuIEdwinson是的,谢谢,这解决了我的问题。。。但是现在我得到了另一个问题,所以我将添加另一个问题。很高兴知道它解决了这个问题。如果您正在启动一个新的Spring项目,我建议您下载一个现有的项目并从那里开始。这会让你的生活变得更轻松。您可以简单地使用CLIs或STS工具或从web上执行它,它说,它无法注入依赖性私有用户服务uS。如果提供了@ComponentScan注释,是否可以签入Application.class?如果提供,请检查基本包装。如果不是,试着提供它。@LyjuIEdwinson是的,谢谢,这解决了我的问题。。。但是现在我得到了另一个问题,所以我将添加另一个问题。很高兴知道它解决了这个问题。如果您正在启动一个新的Spring项目,我建议您下载一个现有的项目并从那里开始。这会让你的生活变得更轻松。您可以简单地使用CLIs或STS工具或从web上执行此操作