1. Spring开发步骤
1.1建立Java或JavaEE项目
1.2导入相关的jar包
org.springframework.asm-3.1.1.RELEASE.jar--字字码处理
org.springframework.core-3.1.1.RELEASE.jar--spring核心,访问资源
org.springframework.beans-3.1.1.RELEASE.jar--核心容器
org.springframework.context-3.1.1.RELEASE.jarApplicationContext等类在这个包中
org.springframework.expression-3.1.1.RELEASE.jarSpring3 EL
commons-logging.jar---spring所必须依赖的唯一第三方,日志
1.3创建测试类
Peron类:
publicclass Person {
private Integer id;
private String name;
private Integer age;
private Address address;
}
Address类:
publicclass Address {
private String province;
private String city;
private String area;
}
配置文件beans.xml:
< xml version="1.0"encoding="UTF-8" >
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
2.Spring容器详解
2.1容器概述
功能多样式:不仅提供放东西的功能;还承担容器中对象的创建,负责相互关系管理等功能;周边性的功能(日志、安全检查)。
Java中容器的发展:无容器(JVM+程序员)=工厂时代--->旧EJB时代,重量级容器(JavaEE容器,对放到容器中有非常多限制)/或者某一种领域(Web容器)-->轻容器时代(PicoContainer、Spring、Apache HiveMind、Guice、xWork)--新EJB时代(对放进容器中没有太多限制)
2.2控制反转(Inversion of Control ,IOC)
概念:一个组件所依赖的对象,是由外部(容器)负责创建并设置到组件里面。把依赖的对象控制权从组件内部转移到外部(容器),就称控制反转IOC,其核心是依赖注入。
public class Girl {
private Boy boy = new Boy();//Girl所依赖的对象
public void kiss() {
System.out.println(boy.getBoyObject());
}
}
boy是在应用内部创建及维护的。所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转,目的是为了获得更好的扩展性和良好的可维护性。
2.3依赖注入(Dependency Injection)
所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。
依赖注入:给一个组件注入其所依赖的对象,具体的方式有四种。
A接口注入Type1(过时)/Type2
B设值方法注入(setter)/Type3
C构造子注入
D字段注入(Field注入)
1) 使用setter注入:
2) 使用构造子注入:
3) 使用字段注入:
publicstaticvoid main(String[]args) {
ApplicationContextacx = new ClassPathXmlApplicationContext("com/maple/spring/inject/beans.xml");
// Personp1 = (Person) acx.getBean("p1");//setter
// p1.say();
// Personp2 = (Person) acx.getBean("p2");//构造子
// p2.say();
Personp3 = (Person) acx.getBean("p3");//字段
p3.say();
}
< xml version="1.0"encoding="UTF-8" >
xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
3.Spring容器初始化过程(不同的实现有不同的过程)
A、根据加载到的配置文件信息注册Bean的信息(BeanDefinition)到Bean工厂。
B、根据得到BeanDefinition对象来确实是否要初始化一些Bean。
C、处理依赖注入(根据BeanDefinition中有关依赖注入的信息)
D、客户端通过容器来查询业务组件。
E、当容器关闭的时候,销毁。
4.Bean工厂及应用上下文
1)BeanFactory--Spring最基本容器接口
2)ApplicationC