admin管理员组

文章数量:1794759

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

多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); } }

 

本文标签: 情况下错误Modeldefiningtype