Could not autowire. No beans of '' type found

243
08 мая 2022, 21:40

Не получается заавтовайрить сервис. Посдкажите куда смотреть. Не автовайрится MongoDetailsService в Security configuration.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableConfigurationProperties
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    @Autowired
    private MongoDetailsService userDetailsService;
    @Override
    public void configure(WebSecurity web) throws Exception {
        super.configure(web);
    }
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        super.configure(http);
    }
}
import com.example.bookStore.entity.Users;
import com.example.bookStore.repo.UserRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
@Component
public class MongoDetailsService implements UserDetailsService {
    @Autowired
    private UserRepo repository;
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        Users user = repository.findByUsername(username);
        if (user == null){
            throw new UsernameNotFoundException("UserNotFound");
        }
        List<SimpleGrantedAuthority> authorities = Arrays.asList(new SimpleGrantedAuthority("user"));
        return new User(user.getUsername(), user.getPassword(), authorities);
    }
}
Answer 1

Укажите название бина @Component("userDetailsService")в классе MongoDetailsService:

@Component("userDetailsService")
public class MongoDetailsService implements UserDetailsService {
    @Autowired
    private UserRepo repository;
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        Users user = repository.findByUsername(username);
        if (user == null){
            throw new UsernameNotFoundException("UserNotFound");
        }
        List<SimpleGrantedAuthority> authorities = Arrays.asList(new SimpleGrantedAuthority("user"));
        return new User(user.getUsername(), user.getPassword(), authorities);
    }
} 
READ ALSO
Почему не работает debug java? Ошибка: &#39;127.0.0.1:62895&#39;, transport: &#39;socket&#39;

Почему не работает debug java? Ошибка: '127.0.0.1:62895', transport: 'socket'

у меня с не работает функция debugошибки:

245
Отловить исключение при сохранении сущности, CrudRepository Spring

Отловить исключение при сохранении сущности, CrudRepository Spring

Пытаюсь отловить исключение при попытке дублирования полей во время сохранения пользователя (на поле ограничение UNIQUE)Использую save от CrudRepository,...

150