目录
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
目的:解决企业应用开发的复杂性
功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
范围:任何Java应用
简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
依赖注入的三种输入:
1.set注入
- <bean class = "com.xbb.biz.impl.UserBizImpl1" id = "userBiz">
- <bean class = "com.xbb.biz.web.UserAction" id = "userAction">
-
"userBiz" ref = "userBiz"> -
"name" value="zhangsan"> -
"age" value="22"> -
"hobby" > -
-
篮球 -
boy -
rap -
-
-
2.构造注入
-
- <bean class = "com.xbb.biz.web.OrderAction" id = "orderAction">
-
-
"userBiz" ref = "userBiz"> -
arg name = "name" value="zhangsan"> -
arg name = "age" value="13"> -
arg name = "hobby"> -
-
篮球 -
boy -
rap -
-
-
-
3.自动装配
default-autowire="byType"
byName:是Spring管理的bean对象的ID进行查找,如果找到不则注入失败:反之
byType:是Spring管理的bean对象接口实现类进行查找;如果没有或者2个以上,则注入失败,反之成功
为什么?
建模过程十分耗
解决的问题:
1.建模必须必不可少
2.建模要保障只执行一次
3.建模后期望在每个servlet都能够拿到Spring的上下文对象
这么做?
1.监听器的初始化方法
2.Sring的上下文要存放在tomact上下文中
IOC的特点-什么是控制反转?
指的是将创建对象的权利反转给Sring容器来完成
配置xml
"http://xmlns.jcp.org/xml/ns/javaee" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
- version="3.1">
-
-
Archetype Created Web Application -
-
spingConfigLocation -
/applicationContext.xml -
-
-
-
com.xbb.ioc.listener.SpringLoadListener -
-
-
-

SpringLoadListener:
- package com.xbb.ioc.listener;
-
- import javax.servlet.ServletContext;
- import javax.servlet.ServletContextEvent;
- import javax.servlet.ServletContextListener;
-
- import org.springframework.context.support.ClassPathXmlApplicationContext;
-
- import com.xbb.biz.web.UserAction;
-
- public class SpringLoadListener implements ServletContextListener{
- @Override
- public void contextInitialized(ServletContextEvent sce) {
- System.out.println("初始化。。。。");
- ServletContext servletContext = sce.getServletContext();
-
- String springLoadListener = servletContext.getInitParameter("spingConfigLocation");
- System.out.println(springLoadListener+"....");
- //拿到spring的上下文
- ClassPathXmlApplicationContext contex = new ClassPathXmlApplicationContext("/spring-context.xml");
- //将spring上下文保存到tomcat上下文中
- servletContext.setAttribute("springContex", contex);
- }
-
- }
案例:
- package com.xbb.ioc.demo;
-
- import org.springframework.context.support.ClassPathXmlApplicationContext;
-
- import com.xbb.biz.web.OrderAction;
- import com.xbb.biz.web.UserAction;
- /**
- * 1.对spring框架进行建模,之后Spring-contex.xml中所有的javabean信息进都会加载Spring容器的上下文中
- * 2.上下文中就包含了Spring-contex.xml所有对象
- * @author Administrator
- *
- *
- * IOC的特点-什么是控制反转?
- * 指的是将创建对象的权利反转给Sring容器来完成
- *
- *
- */
- public class Demo1 {
- @SuppressWarnings("resource")
- public static void main(String[] args) {
- ClassPathXmlApplicationContext contex = new ClassPathXmlApplicationContext("/spring-context.xml");
- UserAction userAction = (UserAction)contex.getBean("userAction");
- userAction.list();
-
-
- OrderAction orderAction = (OrderAction)contex.getBean("orderAction");
- orderAction.list();
-
-
- }
-
- }
spring-context.xml:
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
-
-
-
-
-
-
-
- <bean class = "com.xbb.biz.impl.UserBizImpl1" id = "userBiz">bean>
- <bean class = "com.xbb.biz.web.UserAction" id = "userAction">
- <property name="userBiz" ref = "userBiz">property>
- <property name="name" value="zhangsan">property>
- <property name="age" value="22">property>
- <property name="hobby" >
- <list>
- <value>篮球value>
- <value>boyvalue>
- <value>rapvalue>
- list>
- property>
- bean>
-
-
- <bean class = "com.xbb.biz.web.OrderAction" id = "orderAction">
-
- <property name="userBiz" ref = "userBiz">property>
- <constructor-arg name = "name" value="zhangsan">constructor-arg>
- <constructor-arg name = "age" value="13">constructor-arg>
- <constructor-arg name = "hobby">
- <list>
- <value>篮球value>
- <value>boyvalue>
- <value>rapvalue>
- list>
- constructor-arg>
-
- bean>
-
-
- beans>