Can't @Autowire repository interface Spring Boot
You need to scan for JpaRepositories
add this annotation on your application Class :
@EnableJpaRepositories("com.leagueofsummoners.persistence.interfaces")
EDIT:
In order to configure the entityManager
you need to add the following dependency :
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
if you add this dependency it will configure the repositories automatically for you so you don't need to add the@EnableJpaRepositories
.
No One
Passionate about programming, video games, music and travelling. Currently living in New Zealand.
Updated on June 18, 2022Comments
-
No One almost 2 years
The problem I'm facing is about
@Autowire
the repository interface (UserRepository in my case), I don't know why, but the@Autowire
is failing.UserController
class calls a@Service
class and this one calls a@Component
(DAO class), the DAO class is@Autowiring
the@Repository
.Spring boot main
package com.leagueofsummoners; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer; import org.springframework.boot.context.embedded.ErrorPage; import org.springframework.boot.orm.jpa.EntityScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.http.HttpStatus; import com.leagueofsummoners.persistence.interfaces.UserRepository; @SpringBootApplication public class LeagueofsummonersApplication { public static void main(String[] args) { SpringApplication.run(LeagueofsummonersApplication.class, args); } @Bean public EmbeddedServletContainerCustomizer containerCustomizer() { return (container -> { ErrorPage error401Page = new ErrorPage(HttpStatus.UNAUTHORIZED, "/401.html"); ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"); ErrorPage error500Page = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500.html"); container.addErrorPages(error401Page, error404Page, error500Page); }); } }
DTO CLASS (Entity)
@Entity(name = "user") @Table(name = "users") public class UserDTO implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name = "id_user") private Long idUser; @Column(nullable = false, name = "summoner_name") private String summonerName; @Column(nullable = false) private String username; @Column(nullable = false) private String password; @Column(nullable = false) private String email; @Column(nullable = false) private String avatar; @Column(nullable = false) private String firma; @Column(nullable = false, name = "permission_level") private PermissionLevels permissionLevel; public UserDTO() { }
Repository interface
import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.repository.Repository; import com.leagueofsummoners.model.dto.UserDTO; @org.springframework.stereotype.Repository public interface UserRepository extends Repository<UserDTO, Long> { Page<UserDTO> findAll(Pageable pageable); UserDTO findByUsernameIgnoringCase(String username); UserDTO findByIdUser(int idUser); }
DAO class (this one failing when autowiring repository class)
@Component public class UserDAO{ @Autowired private UserRepository userRepository; public UserDTO findByUsernameIgnoringCase(String username) { return this.userRepository.findByUsernameIgnoringCase(username); } }