今天下载并捣鼓了一下springboot,然而因为对springboot的不熟悉,导致我想哭,下面说一下惨痛教训:
下载了springboot工程,然后在src/main/java下面新建了两个目录,A和B(两个完全不相关,用来演示两个不相关的功能),我把Application.java(springboot启动类)放在A目录中;
写好功能后,在test目录建立对应目录进行测试,测试A模块内容一切正常。继续测试B模块内容,然而。。。。。@Autowired 引用的bean一直报错,说不存在,我反复对比功能A和功能B 500遍,改到几乎一摸一样,然后错误依旧。我又奋力百度,网上说的72种方法,我都一一试了,要不越改越错,要不还是老样子,就这样,三小时过去了。当我准备眼睛一闭,腿一伸的时候,真神出现了:
“
SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描!
“Application类”是指SpringBoot项目入口类。这个类的位置很关键:
如果Application类所在的包为:com.boot.app,则只会扫描com.boot.app包及其所有子包,如果service或dao所在包不在com.boot.app及其子包下,则不会被扫描!
即, 把Application类放到dao、service所在包的上级,com.boot.Application
知道这一点非常关键,不知道spring文档里有没有给出说明,如果不知道还真是无从解决
“
引自:http://bbs.csdn.net/topics/391978111