spring boot找不到类型的bean

时间:2017-08-27 07:48:25

标签: java spring spring-boot javabeans

我正在尝试制作简单的门户网站,但是当我尝试通过

构建代码时
  

mvn clean install -X

我收到了错误代码

  

描述:   com.kapjee.dziennik.service.UserDetailsS​​erviceImpl中的字段userRepository需要一个无法找到的类型为“com.kapjee.dziennik.service.UserRepository”的bean。   行动:   考虑在配置中定义'com.kapjee.dziennik.service.UserRepository'类型的bean。

下面给出一个项目树。

Tree of project

UserDetailsS​​erviceImpl

@Service
public class UserDetailsServiceImpl implements UserDetailsService {

@Autowired
private UserRepository userRepository;

@Override
@Transactional(readOnly = true)
public UserDetails loadUserByUsername(String username) throws 
UsernameNotFoundException {

 User user = userRepository.findByUsername(username);
   if (user != null) {
      Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
      grantedAuthorities.add(new 
      SimpleGrantedAuthority(user.getRole().toString()));
      return new 
      org.springframework.security.core.userdetails.User(user.getUsername(),
      user.getPassword(), grantedAuthorities);
  } else {
    throw new UsernameNotFoundException("User was not found!");
  }

 }

}

这是UerService

@Service
public interface UserService {

  void save(User user);

  User findByUsername(String username);
}

和UserRepository

public interface UserRepository extends  JpaRepository<User, Long> {
  User findByUsername(String username);
}

在大班我分享所有包

@SpringBootApplication
@ComponentScan({"com.kapjee.dziennik"})
@EntityScan("com.kapjee.dziennik.model")
@EnableJpaRepositories("com.kapjee.dziennik.model")

2 个答案:

答案 0 :(得分:1)

最有可能的是,EnableJpaRepositories导入错误的包。我猜测UserRepository不在model包中。使用类型安全属性basePackageClasses代替basePackages。 在您的情况下,@ComponentScanEntityScan是多余的。我很遗憾地说,但似乎你把一些带有创可贴和粘合剂的代码放在一起而没有真正理解你正在做的事情。

答案 1 :(得分:1)

@EnableJpaRepositories("com.kapjee.dziennik.model") 

我看到你在模型包中指定了jpa存储库,你还需要包含包含存储库的包,所以如果包com.kapjee.dziennik.repository下的存储库只是返回级别

 @EnableJpaRepositories("com.kapjee.dziennik")