spring 引导找不到类型的 bean
spring boot could not find bean of type
我正在尝试制作简单的门户网站,但是当我尝试通过
构建代码时
mvn clean install -X
我收到错误代码
Description:
Field userRepository in com.kapjee.dziennik.service.UserDetailsServiceImpl required a bean of type 'com.kapjee.dziennik.service.UserRepository' that could not be found.
Action:
Consider defining a bean of type 'com.kapjee.dziennik.service.UserRepository' in your configuration.
下面给大家一个工程树。
Tree of project
UserDetailsServiceImpl
@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);
}
在 Main class 我分享所有包
@SpringBootApplication
@ComponentScan({"com.kapjee.dziennik"})
@EntityScan("com.kapjee.dziennik.model")
@EnableJpaRepositories("com.kapjee.dziennik.model")
很可能,EnableJpaRepositories
导入了错误的包。我猜 UserRepository
不在 model
包中。使用类型安全属性 basePackageClasses
而不是 basePackages
。
@ComponentScan
和 EntityScan
在您的情况下是多余的。很抱歉,您似乎在没有真正了解自己在做什么的情况下,用创可贴和胶水拼凑了一些代码。
@EnableJpaRepositories("com.kapjee.dziennik.model")
我看到您在模型包中指定了 jpa 存储库,您还需要包含包含存储库的包,所以如果您的存储库在包 com.kapjee.dziennik.repository 下,只需返回一个级别
@EnableJpaRepositories("com.kapjee.dziennik")
我正在尝试制作简单的门户网站,但是当我尝试通过
构建代码时mvn clean install -X
我收到错误代码
Description: Field userRepository in com.kapjee.dziennik.service.UserDetailsServiceImpl required a bean of type 'com.kapjee.dziennik.service.UserRepository' that could not be found. Action: Consider defining a bean of type 'com.kapjee.dziennik.service.UserRepository' in your configuration.
下面给大家一个工程树。
Tree of project
UserDetailsServiceImpl
@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);
}
在 Main class 我分享所有包
@SpringBootApplication
@ComponentScan({"com.kapjee.dziennik"})
@EntityScan("com.kapjee.dziennik.model")
@EnableJpaRepositories("com.kapjee.dziennik.model")
很可能,EnableJpaRepositories
导入了错误的包。我猜 UserRepository
不在 model
包中。使用类型安全属性 basePackageClasses
而不是 basePackages
。
@ComponentScan
和 EntityScan
在您的情况下是多余的。很抱歉,您似乎在没有真正了解自己在做什么的情况下,用创可贴和胶水拼凑了一些代码。
@EnableJpaRepositories("com.kapjee.dziennik.model")
我看到您在模型包中指定了 jpa 存储库,您还需要包含包含存储库的包,所以如果您的存储库在包 com.kapjee.dziennik.repository 下,只需返回一个级别
@EnableJpaRepositories("com.kapjee.dziennik")