首先给出今天思考容器问题的原因:
今天在解决我的一个小ssm框架的硬编码问题的时候出了问题:
图中红色框的三个参数就是我编程的时候的硬编码问题,由于写死在程序中,不利于以后的修改,所以我通过把这三个参数提取到resources.properties中,然后在Spring框架的applicationContext.xml中利用标签
<context:property-placeholder location="classpath:resources.properties"/>
来读取这个配置文件,结果debug的时候发现参数注入失败,获取不到值。
于是乎我想了一下,既然是在@controller中注入参数,那就把<context:property-placeholder location="classpath:resources.properties"/>放在Springmvc.xml文件中,试试能不能成功,果然,一下子就读取到了。
后来我去百度,发现了我一直以来没有明白的问题:
spring和springmvc,同是spring的框架,而且配置文件很多标签一样,xml文件头也一样,但是他们确实不同的两个东西,spring框架是一个容器,主要装@service和@response的bean,而springmvc也是一个容器,springmvc主要装的是@controller层的bean和一些视图解析器之类的。
在Spring整体框架的核心概念中,容器是核心思想,就是用来管理Bean的整个生命周期的,而在一个项目中,容器不一定只有一个,Spring中可以包括多个容器,而且容器间有上下层关系,目前最常见的一种场景就是在一个项目中引入Spring和SpringMVC