项目中将图片服务器分离出来,相关配置单独配置到一个 properties 文件中,并使用spring管理该配置文件,如图:
使用的是Nginx 来负责图片服务的处理,关键配置如下:
启动项目进行图片上传的时候却死活找不到配置文件中的地址
如上是关键代码,properties 是spring管理的,并在控制层进行注入操作,图片无法上传获取不到地址。查错许久后将该 properties 文件交给springMVC管理,问题意外解决。可以确定问题的原因是spring的父子容器问题。
spring一共有2个容器
启动tomcat后启动两个spring容器:
1、spring通过web.xml来启动的。(父)
2、springMVC来启动的。(子)
关系与限制:
1、子容器能访问父容器的资源。(bean)
2、父容器不能访问子容器的资源。
也就是说,我们的控制层是springMVC 来处理,而service层是spring来管理的,而如果 properties 文件是spring管理,那么因为容器限制,在控制层注入 properties 文件是无法成功的,而放到springMVC来管理虽然可以成功,但是却有代码重用性问题,解决方案,在service层建立一个类,将属性注入放到这里来处理
在控制层将这个类注入
间接实现了父容器无法访问子容器资源的问题。
希望对大家有帮助,如有不对之处,还请指正