Я пытаюсь перейти из H2 в базу данных памяти в mysql, и я включил compile("mysql:mysql-connector-java:5.1.6")
в мой build.gradle после удаления зависимости H2. Я также поместите в моих application.properties:Gradle не распознает зависимость mysql
spring.datasource.url=jdbc:mysql://localhost:3306/mutibodb
spring.datasource.username=xxx
spring.datasource.password=xxx
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto: create
Однако, когда я восстановить, я получаю эту ошибку: http://pastebin.com/4cS9Dk0U Это та же ошибка, я получаю, если я не ставлю ни MySQL или h2 зависимость, что означает, что он не принимает его вообще.
Мой полный существующий код, который работает с базой данных H2 здесь: https://github.com/devdeep1987/MutiboProject/tree/master/MutiboServer
Не могли бы вы сказать мне, если есть шаг, который я пропустил.
Update: Мой класс CustomUserDetailsService является следующее:
@Service
public class CustomUserDetailsService implements UserDetailsService {
private UserRepository repository;
private static final Logger logger = LoggerFactory.getLogger(CustomUserDetailsService.class);
@Autowired
public CustomUserDetailsService(UserRepository repo) {
this.repository = repo;
}
@Override
public UserDetails loadUserByUsername(String name) throws UsernameNotFoundException {
logger.info("username:"+name);
User u = repository.findByUsername(name);
if (u == null)
throw new UsernameNotFoundException("User details not found with this username: " + name);
String username = u.getUsername();
String password = u.getPassword();
List authList = new ArrayList();
authList.add(new SimpleGrantedAuthority("USER"));
//get the encoded password
//String encodedPassword = passwordEncoder.encode(password);
org.springframework.security.core.userdetails.User user = new org.springframework.security.core.userdetails.User(username, password, authList);
return user;
}
public boolean createUser(String username, String password) {
User existing = repository.findByUsername(username);
if(existing!=null)
return false;
User u = new User();
u.setUsername(username);
u.setPassword(password);
repository.save(u);
return true;
}
private List getAuthorities(String role) {
List authList = new ArrayList();
authList.add(new SimpleGrantedAuthority("USER"));
//you can also add different roles here
//for example, the user is also an admin of the site, then you can add ROLE_ADMIN
//so that he can view pages that are ROLE_ADMIN specific
if (role != null && role.trim().length() > 0) {
if (role.equals("admin")) {
authList.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
}
}
return authList;
}
}
и мой класс UserRepository является:
@Repository
public interface UserRepository extends CrudRepository<User, Long>{
User findByUsername(String username);
}
Это ваша проблема: 'Отсутствие квалификационного компонента типа [showcase.UserRepository], найденного для зависимости: ожидается как минимум 1 компонент, который квалифицируется как кандидат autwire для этой зависимости. Аннотации зависимостей: {} '. Выделите класс 'CustomUserDetailsService.class' и' UserRepository' – Jens
Ok. Но он работал, когда я использовал H2. Так зачем же теперь жаловаться? Должен ли я размещать код этих классов здесь? – doomguy
Да, пожалуйста, размещайте занятия. – Jens