1.Spring简介:

Spring为企业应用的开发提供了一个轻量级的解决方案。包括:基于依赖注入的核心机制、基于AOP的声明式事务、与多种持久层技术的整合,以及优秀的Web MVC框架。

下图是Spring的架构图:

Spring下载进度条 spring揭秘下载_xml

2 Spring入门:

2.1 Spring 的下载和安装:

1. 登陆http://repo.springsource.org/libs-release-local/ 下载, org ->springframework-> spring   下载 spring-framework-4.0.4.RELEASE-dist.zip 。

2. 解压的目录结构:

   docs:各种文档,开发指南和API

   libs: class文件的jar包;source文件的压缩包;API文档的压缩包

   schemas:包含spring各种配置文件的XML Schema文档。

   readme.txt、notice.txt、licence.txt等说明文件。

3. Spring依赖common-logging的jar包,需要下载该jar包。

4. 将libs下的jar包和common-logging的jar包都添加到 java Build Path。


2.2 使用Spring管理Bean

Spring的核心容器就是一个超级大工厂,把容器中的一切对象称为Bean。Spring对Bean没有任何要求,只要是一个java类,Spring就将其当做Bean处理。

如下2个简单类:Axe和Person:

Axe.java:

package com.pmpa.ch01;

public class Axe {

	public String chop(){
		return "砍柴";
	}

}

Person.java:

package com.pmpa.ch01;

public class Person {
	private Axe axe;

	public Axe getAxe() {
		return axe;
	}

	public void setAxe(Axe axe) {
		this.axe = axe;
	}
	
	public void useAxe()
	{
		System.out.println("打算去弄柴火");
		//调用axe的chop方法,表示Person类依赖于Axe类。
		System.out.println(axe.chop());		
	}
}


A对象需要调用B对象的方法的情形,称为依赖。

beans.xml(XML配置文件):


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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.xsd">
<bean id="axe" class="com.pmpa.ch01.Axe">
</bean>
<bean id="person" class="com.pmpa.ch01.Person">
	<property name = "axe" ref="axe"></property>
</bean>
</beans>



Spring使用XML配置文件来管理容器中的Bean。配置文件中的<bean .../>元素默认以反射方式来调用该类无参的构造器。

<property.../>子元素通常用于作为<bean.../>的子元素,它驱动spring在底层以反射执行一次setter方法。其中name属性值决定执行哪个setter,而value(以String做参数)或ref(以其他Bean做参数)决定执行setter方法的传入参数。

<bean.../>驱动spring调用构造器创建对象;<property.../>子元素驱动Spring执行setter方法,这两步是先后执行的,中间几乎没有任何间隔。



<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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.xsd">
<bean id="axe" class="com.pmpa.ch01.Axe">
</bean>
<bean id="person" class="com.pmpa.ch01.Person">
	<property name = "axe" ref="axe"></property>
</bean>
</beans>



接下来,通过Spring容器来访问容器中的Bean,ApplicationContext是Spring最常用的接口,有2个实现类:

(1)ClassPathXmlApplicationContext:在类加载路径下搜索配置文件,常用的方式。

(2)FileSystemXmlApplicationContext:在文件系统路径下搜索配置文件。

有2种获取Bean的方式:

Object getBean(String name):通过Bean id来获取指定Bean,获取Bean后需要强制类型转换。

<T> T getBean(String name,Class<T> requiredType):通过Bean id来获取指定Bean,但是带一个泛型参数。

下面是最终测试类:BeanTest.java

package com.pmpa.ch01;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class BeanTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ApplicationContext ctx = new ClassPathXmlApplicationContext("conf/beans.xml");
		Person ps = ctx.getBean("person", Person.class);
		ps.useAxe();
	}
}

运行结果:

打算去弄柴火
砍柴


转载于:https://blog.51cto.com/6216083/1830612