多model的情况下Consider defining a bean of type错误排查

今天遇到一个问题,就是在多Model的SpringBoot项目里,明明已经加了@Service注解,但是在启动的时候还是无法启动,报出下面的错误

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-07-13 18:23:51.180 ERROR 1546 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Field studentService in com.demo.web.controller.StudentController required a bean of type 'com.demo.service.StudentService' that could not be found.


Action:

Consider defining a bean of type 'com.demo.service.StudentService' in your configuration.


Process finished with exit code 1

首先先排查一个问题,自己的jar有没有导全

web model下面的pom.xml

        <dependency>
            <groupId>com.demo</groupId>
            <artifactId>dao</artifactId>
        </dependency>

        <dependency>
            <groupId>com.demo</groupId>
            <artifactId>service</artifactId>
        </dependency>

        <dependency>
            <groupId>com.demo</groupId>
            <artifactId>entity</artifactId>
        </dependency>

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

service model下面的pom.xml

        <dependency>
            <groupId>com.demo</groupId>
            <artifactId>dao</artifactId>
        </dependency>
        <dependency>
            <groupId>com.demo</groupId>
            <artifactId>entity</artifactId>
        </dependency>

dao model 下面的pom.xml

        <dependency>
            <groupId>com.demo</groupId>
            <artifactId>entity</artifactId>
        </dependency>

         <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

第二个就是有没有将报错的类加入到容器中。

dao model

//或者在启动类上面加一个MapperScan("mapper包的全路径")
@Mapper 
public interface StudentMapper {

    @Select("SELECT * FROM students WHERE id=#{id}")
    Student findStudentById(int id);
}

或者是这种情况

@SpringBootApplication
@MapperScan(basePackages = "com.demo.dao")
public class StartApplication {

    public static void main(String[] args) {
        SpringApplication.run(StartApplication.class, args);
    }

}

 service model

public interface StudentService {

    Student findStudentById(int id);
}
@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentMapper studentMapper;


    @Override
    public Student findStudentById(int id) {

        return studentMapper.findStudentById(id);

    }
}

controller Model

@RestController
public class StudentController {

    @Autowired
    private StudentService studentService;

    @GetMapping("/find_by_id")
    public Student getStudent(@Param("id") int id){
        Student student= studentService.findStudentById(id);
        return student;
    }
}

当你在确保这@Mapper、@Service、@RestController三个注解都已经被加上了之后还是报出这样的错误之后,你可以再去看下面这种情况。

 是不是在你的启动类,并没有将其他Model给扫进去。如果不去特别声明的话就只会扫当前的Model。

web model下面的启动类:

@SpringBootApplication(scanBasePackages = "com.demo")
@MapperScan(basePackages = "com.demo.dao")
public class StartApplication {

    public static void main(String[] args) {
        SpringApplication.run(StartApplication.class, args);
    }

}

 

全部评论

相关推荐

今天周一休息,突发奇想写一篇阶段总结。如题,我已经去了一个和Java彻底毫无关联的行业。曾经我以为自己能在计算机行业发光发热,没想到刚入行一年多就当了逃兵。从最开始的热爱到现在一看到代码就厌恶,不知道自己经历了什么。所以我去干什么了?答案是:在成都当了租房销售。上班那会压力大了就念叨着去干租房中介,但是一直下不去这个决心,想着自己学了四年多的计算机知识,终究还是不甘心。终于在某一天准备八股文的时候,看着无数篇和工作内容关系不大的理论知识,那一刻下定决心,决定尝试一下销售行业,也算是给自己一个交代。后面阴差阳错的投了成都自如去当租房管家,没想到面试很顺利,在当天一百多个面试的人里面,我成为了为数不多通过的几个幸运儿之一。目前已经培训通过,正式入职,也开了单,也有压力但是每天过得很开心,真心喜欢那种和人交流的感觉,哪怕是最后没有选择找我租房。说这些也是想告诉那些大三,大四正在找Java实习而焦虑的同学:你们现在还年轻,选择很多,容错率也很高,可以尽情去尝试自己喜欢的行业和工作。不用因为某一次的面试没通过或者简历石沉大海而焦虑,更不用因为身边人都在挤编程的独木桥就强迫自己跟风。也算是自己的碎碎念吧,也希望自己能在新的领域取得一点小成就。也祝牛油工作顺利!
沉淀小子:干啥都不丢人啊,生存是必须要的,销售很考验一个人综合素质能力的,好的销售人脉和资源可不比写字楼的白领差啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务