Spring Web
一、Spring开发Web项目
SpringIoC容器初始化:将IoC容器中的所有bean实例化为对象(new对象);将各个bean依赖的属性值注入进去(属性赋值)。
在Java程序中初始化IoC容器:ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
JavaWeb程序初始化IoC容器《Web项目如何初始化IoC容器》:
注意:Web项目的jar包,要存放到WEB-INF/lib中
思路:当服务启动时(Tomcat),通过监听器将SpringIoC容器初始化一次(该监听器 spring-web.jar已经提供);
Web项目启动时,会自动加载web.xml,因此需要在web.xml中加载监听器(IoC容器初始化)。
Web项目启动时,启动实例化IoC容器:
<listener>
<!-- 配置spring-web.jar提供的监听器,此监听器可以在服务器启动时,初始化IoC容器。
初始化IoC容器(ApplicationContext.xml):
方法1========必须告诉监听器此IoC容器的位置: context-param
方法2=======默认约定的位置:WEN-INF下;而且文件必须为ApplicationContext.xml(WEN-INF/ApplicationContext.xml)
-->
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 指定IoC容器(ApplicationContext.xml)的位置 -->
<context-param>
<!-- 监听器的父类ContextLoader中有一个属性contextConfigLocation,该属性值保存着IoC容器 配置文件ApplicationContext.xml的位置-->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
二、拆分Spring配置文件
《1》Java项目:
《2》Web项目:
*根据什么拆分?
1.三层结构
UI(html/css/jsp、Servlet):applicationController.xml
Service:applicationService.xml
DAO:applicationDao.xml
公共数据库:applicationDB.xml
2.功能结构(功能、模块拆分)
*拆分之后怎么合并:(如何将多个配置文件加载)
(方法1)
web.xml中配置:
<context-param>
<param-name></param-name>
<param-value>
classpath:applicationContext.xml
classpath:applicationContext-Controller.xml
classpath:applicationContext-Service.xml
classpath:applicationContext-Dao.xml
classpath:applicationContext-DB.xml
</param-value>
</context-param>
(方法2)推荐
web.xml中配置:
<context-param>
<param-name></param-name>
<param-value>
classpath:applicationContext.xml
<!-- 使用*通配符 -->
classpath:applicationContext-*.xml
</param-value>
</context-param>
(方法3)
i.web.xml中配置一个主配置文件,然后在主配置文件中导入其他配置文件:
<context-param>
<param-name></param-name>
<param-value>
classpath:applicationContext.xml
</param-value>
</context-param>
ii.在applicationContext.xml中配置:
<import resource="applicationContext-Controller.xml" />
<import resource="applicationContext-Service.xml" />
<import resource="applicationContext-Dao.xml" />
<import resource="applicationContext-DB.xml" />
以上代码可以简化:
<import resource="applicationContext-*.xml" />
注意:
bean的实例化、DI注入是保存在Spring IoC容器中;
但是每一次request请求是请求Servlet容器。
故,必须把Spring IoC容器和Servlet容器联系在一起。
在init(){.....}获取Spring IoC容器中的bean对象。