Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: 没有符合条件的 bean 类型
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type
我有一个我无法独自处理的问题。我已经尝试了一切可能的(在我看来)。我真的需要你的帮助,因为我没有任何想法。
我有这个错误:
...
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityConfig': Unsatisfied dependency expressed through field 'userService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userService': Unsatisfied dependency expressed through field 'userRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'web.repositories.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
...
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userService': Unsatisfied dependency expressed through field 'userRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'web.repositories.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
...
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'web.repositories.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
...
我的代码:
interface UserRepository
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
class UserService
@Service("userService")
public class UserService implements UserDetailsService {
@Autowired
UserRepository userRepository;
@Autowired
RoleRepository roleRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userRepository.findByUsername(username);
if (user == null) {
throw new UsernameNotFoundException("User not found");
}
return user;
}
public User findUserById(Long userId) {
Optional<User> userFromDb = userRepository.findById(userId);
return userFromDb.orElse(new User());
}
public List<User> allUsers() {
return userRepository.findAll();
}
...
}
class SecurityConfig
@Configuration
@EnableWebSecurity
@ComponentScan(basePackages = "web")
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
@Qualifier("userService")
UserService userService;
@Autowired
protected void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userService).passwordEncoder(passwordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin()
.loginPage("/login")
.successHandler(new LoginSuccessHandler())
.loginProcessingUrl("/login")
.usernameParameter("username")
.passwordParameter("password")
.permitAll();
http.logout()
.permitAll()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/login?logout")
.and().csrf().disable();
http
.authorizeRequests()
.antMatchers("/login").anonymous()
.antMatchers("/admin_panel")
.access("hasAnyRole('ADMIN')")
.anyRequest()
.authenticated()
;
}
@Bean
public PasswordEncoder passwordEncoder() {
return NoOpPasswordEncoder.getInstance();
}
}
My folder hierarchy:
求助...
这几天我一直在尝试创建 Spring 安全 CRUD 应用程序。我很困惑。我无法解决这个错误。
您必须启用 JpaRepositories 配置,将 @EnableJpaRepositories
注释添加到您的配置
@Configuration
@EnableJpaRepositories("web.repositories")
public class ApplicationConfiguration {
@Bean public EntityManagerFactory entityManagerFactory() {
// put here your favourite entity manager factory
}
}
希望这对您有所帮助
我有一个我无法独自处理的问题。我已经尝试了一切可能的(在我看来)。我真的需要你的帮助,因为我没有任何想法。
我有这个错误:
...
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityConfig': Unsatisfied dependency expressed through field 'userService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userService': Unsatisfied dependency expressed through field 'userRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'web.repositories.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
...
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userService': Unsatisfied dependency expressed through field 'userRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'web.repositories.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
...
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'web.repositories.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
...
我的代码:
interface UserRepository
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
class UserService
@Service("userService")
public class UserService implements UserDetailsService {
@Autowired
UserRepository userRepository;
@Autowired
RoleRepository roleRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userRepository.findByUsername(username);
if (user == null) {
throw new UsernameNotFoundException("User not found");
}
return user;
}
public User findUserById(Long userId) {
Optional<User> userFromDb = userRepository.findById(userId);
return userFromDb.orElse(new User());
}
public List<User> allUsers() {
return userRepository.findAll();
}
...
}
class SecurityConfig
@Configuration
@EnableWebSecurity
@ComponentScan(basePackages = "web")
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
@Qualifier("userService")
UserService userService;
@Autowired
protected void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userService).passwordEncoder(passwordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin()
.loginPage("/login")
.successHandler(new LoginSuccessHandler())
.loginProcessingUrl("/login")
.usernameParameter("username")
.passwordParameter("password")
.permitAll();
http.logout()
.permitAll()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/login?logout")
.and().csrf().disable();
http
.authorizeRequests()
.antMatchers("/login").anonymous()
.antMatchers("/admin_panel")
.access("hasAnyRole('ADMIN')")
.anyRequest()
.authenticated()
;
}
@Bean
public PasswordEncoder passwordEncoder() {
return NoOpPasswordEncoder.getInstance();
}
}
My folder hierarchy:
求助... 这几天我一直在尝试创建 Spring 安全 CRUD 应用程序。我很困惑。我无法解决这个错误。
您必须启用 JpaRepositories 配置,将 @EnableJpaRepositories
注释添加到您的配置
@Configuration
@EnableJpaRepositories("web.repositories")
public class ApplicationConfiguration {
@Bean public EntityManagerFactory entityManagerFactory() {
// put here your favourite entity manager factory
}
}
希望这对您有所帮助