在controller上加注解@Controller 和@RestController都可以在前端调通接口,但是二者的区别在于,当用前者的时候在方法上必须添加注解@ResponseBody,如果不添加@ResponseBody,就会报上面错误,因为当使用@Controller 注解时,spring默认方法返回的是view对象(页面)。而加上@ResponseBody,则方法返回的就是具体对象了。@RestController的作用就相当于@Controller+@ResponseBody的结合体
现在的项目中,dao三层开发模式中的service/biz层,用spring较为普遍,而web中的controller可以采用springMVC。
在我们是先写接口,后写实现的过程中,在service的实现类中标记@Autowired 而出现类似Could not autowire field: private com.simple.dao.LoginDao com.simple.mvc.service.LoginService.loginDao; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.simple.dao.LoginDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations:{@org.springframework.beans.factory.annotation.Autowired(required=true)}
的问题。
解决方法是①首先查看@Autowired标记的字段对应的接口的实现类是否标记@Service、@Repository等交给Spring的IOC容器管理;②查看对应的类型是否一致或满足里氏代换原则,如@Autowired标记字段属性对应的接口的实现类是否实现了这个接口。
@EnableAutoConfiguration(exclude={
JpaRepositoriesAutoConfiguration.class //禁止springboot自动加载持久化bean
})
@Import({JpaRepositoriesAutoConfiguration.class})//springboot自动加载持久化bean