spring是一站式框架;正是由于spring框架性质是属于容器性质的,容器中装什么对象就有什么功能,因此能够一站式,不只不排斥其余框架,还能帮其余框架管理对象。html
com.springsource.org.apache.log4j-1.2.15.jar(可选)java
位置任意(建议放到src下)web
配置文件名任意(建议applicationContext.xml)spring
导入约束apache
BeanFactory接口数组
ApplicationContextsession
结论:web开发中,使用applicationContext. 在资源匮乏的环境能够使用BeanFactoryapp
<!-- 将User对象交给spring容器管理 --> <!-- Bean元素:使用该元素描述须要spring容器管理的对象 class属性:被管理对象的完整类名. name属性:给被管理的对象起个名字.得到对象时根据该名称得到对象. 能够重复.能够使用特殊字符. id属性: 与name属性如出一辙. 名称不可重复.不能使用特殊字符. 结论: 尽可能使用name属性. scope属性: singleton(默认值):单例对象.被标识为单例的对象在spring容器中只会存在一个实例 prototype:多例原型.被标识为多例的对象,每次再得到才会建立.每次建立都是新的对象.整合struts2时,ActionBean必须配置为多例的. request:web环境下.对象与request生命周期一致. session:web环境下,对象与session生命周期一致. --> <bean name="user" class="cn.itcast.bean.User" scope="singleton" ></bean> <!-- 导入其余spring配置文件 --> <import resource="cn/itcast/b_create/applicationContext.xml"/> </beans>
a.空参构造方式
框架
b.静态工厂(了解)测试
c.实例工厂(了解)
复杂类型注入
1)数组
2)集合
3)字典
4)properties(键值全是String类型的字典)
一、导包
spring-web-4.2.4.RELEASE.jar // 多加一个这个包
二、 封装Dao和Service对象(注意:service中提供set方法)
三、获取容器
注:这是错误的示范.致使每次请求都建立新的容器
3.一、配置容器随项目启动
<!-- 可让spring容器随项目的启动而建立,随项目的关闭而销毁 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 指定加载spring配置文件的位置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-config.xml</param-value> </context-param>
四、获取容器
//得到spring容器=>从Application域得到便可,Spring为咱们封装了一个方法能够直接获取,但须要servletContext对象(得到application域) //1 得到servletContext对象 ServletContext servletcontext = ServletActionContext.getServletContext(); //2.从context中得到ac容器 WebApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(servletcontext); //3.从容器中得到CustomerService CustomerService service = (CustomerService) ac.getBean("customerService");