Spring字段需要一个找不到类型的bean

时间:2018-11-06 12:58:17

标签: java intellij-idea autowired spring-boot-maven-plugin

我正在尝试使用简单的登录页面制作Spring Boot应用程序,但是当我尝试将@Autowired与我创建的接口一起使用时,似乎是一个问题。我读了7-8个类似的问题,但是我发现那里的答案对我没有用。当我在消耗JpaRepository的接口上使用@Autowired时,效果很好。

我的结构是:

enter image description here

我的软件包与我的应用程序文件处于同一级别。

这是我的控制人

@Controller
@RequestMapping(value = "/users")
public class LoginContoller     {



@Autowired
UsersRepositoryCustom usersRepositoryCustom;

@RequestMapping(value = "/login", method = RequestMethod.GET)
public String loginForm(){
    return "login";
}

@RequestMapping(value = "/login", method = RequestMethod.POST)
public @ResponseBody
String verifyLogin(@RequestParam String name, @RequestParam String password) {

    System.out.println("Controller: name: " + name + " pass " + password);
    Users users=usersRepositoryCustom.loginUser(name, password);
    if (users==null) {
        System.out.println("login control user null");
        return "login";
    }

    return "users/all";
}
}

存储库:

    @Repository
    public interface UsersRepositoryCustom {
        Users loginUser(String name, String password);
    }

我认为这没有帮助,但这是实现方式

    public abstract class UserImpl implements UsersRepositoryCustom {


        @Autowired
        UsersRepository usersRepository;

        @Override
        public Users loginUser(String name, String password) {
            System.out.println("UserImpl: nume: " + name + " pass " + password);
            Users user=usersRepository.findByUsername(name);
            if (user != null && user.getPassword().equals(password)) {
                System.out.println("User Login"+user.getId()+"  "+user.getUsername());
                return user;
            }
            return null;
        }
    }

Application.properties:

server.port=8080
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url= jdbc:mysql://localhost:3308/assignment-one-db
spring.datasource.username=root
spring.datasource.password=789456123

spring.jpa.hibernate.ddl-auto= update
spring.jpa.generate-ddl=true
spring.jpa.show-sql=true

pom.xml

        http://maven.apache.org/xsd/maven-4.0.0.xsd“>             4.0.0

        <groupId>com.asg1</groupId>
        <artifactId>asg1</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>

        <name>asg1</name>
        <description>assignment1</description>

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.0.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>

        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>10</java.version>
        </properties>

        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>

            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>

        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>


    </project>

我尝试使用@ EnableJpaRepositories,@ EnableAutoConfiguration,但这没用

这是错误:

说明:

Field usersRepositoryCustom in com.asg1.asg1.controllers.LoginContoller required a bean of type 'com.asg1.asg1.repository.UsersRepositoryCustom' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'com.asg1.asg1.repository.UsersRepositoryCustom' in your configuration.


Process finished with exit code 1

0 个答案:

没有答案