**
IDEA中给Spring项目配置aop后报错org.springframework.beans.factory.BeanCreationException
**
问题描述
在idea上有一个Spring的web项目,通过在idea上配置本地tomcat进行部署,项目之前是正常的。今天在spring-config.xml文件中添加了一个自定义的aop的配置,如下图。
启动tomcat,页面报错如下:
后台报错如下
开始解决问题
第一步
注意到上面报错信息的最后一个嵌套错误nested exception is java.lang.NoClassDefFoundError: org/aspectj/lang/JoinPoint
百度可知,错误原因在于我们项目中缺少aop切面表达式的解析工具,在网上找到aspectjrt.jar、aspectjweaver.jar两个文件。
下载

引入
重启tomcat,依然报错,继续解决问题
第二步
可能细心的同学已经注意到了
这两个jar包是项目运行需要的,compile明显不行,修改为provided。(记得点Apply*****************)
重启tomcat,依然报错,继续解决问题
第三步
什么原因?
找到生成的war包
我们发现我们需要添加的两个jar包还是没有进来。
为啥?啥原因?
我们要想想war包是哪里来的?
IDEA的war包,是在Project Structure ->Artifacts这个地方进行描述的。

找到war包的下的lib文件夹,展开,发现果然没有我们的jar包

问题找到了
第四步
既然idea没有自动加进来,那我们就自己手动添加呗。
1.找到Libraries,点击加号,进行添加。
2.jar包添加完成如图。(记得点Apply*****************)
3.回到Artifacts,选中lib文件夹,右击选择Add Copy of -->Libraries Files,进行添加,结果如图:

(记得再次点Apply*****************)
4。重启tomcat
页面显示正常,后台无报错。
找到war包,可以看到加入的两个jar包
补充一点
我们再次回到Modules–>dependencies处
发现多出了两个jar包的引用(如果没有可以点击加号添加)
原来的两个jar包是直接引入具体模块,后面这两个jar包是先引入整体项目中,再引入模块。
为了看起来整齐,我们删除原来的直接引入的jar包,并将通过项目引入的jar包范围改为Provided.(重要的事情,再次提醒,记得点Apply*****************)
通过整个过程,我们发现先引入项目,再引入模块,明显更方便。idea添加jar包的信息可以查看下面的文章。
个人原创,有错误、不足之处,请各位多多指正。