Spring学习笔记(1)(一)

2014-11-24 09:24:04 · 作者: · 浏览: 0

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