[一知半解,就是给自己挖坑]
Spring是我们现在经常会使用到的基础框架服务,并且我相信懂得使用Spring来开发的人大有人在。但是,最近博主在使用spring与别的框架整合时,经常会遇到不同的需求和错误,而且往往不知道这些问题到底是哪里导致的。因此,接下来的文章中,我们将对Spring的使用做一下简单的总结。对于Spring的详细介绍及其原理,我们会先通过具体实例,再按照通俗的语言来解释。
准备工作:
a.操作系统:win7 x64
b.开发工具:eclipse mars j2ee版本,maven3.3.2,Spring 4
-------------------------------------------------------------------------------------------------------------------------------------
正文开始:
1.spring的简介:百度百科
2.使用maven创建helloworld工程,创建步骤请参考:Maven简明教程(3)---在eclipse中创建工程与基本命令介绍,创建成功之后工程结构图如下所示:
3.修改pom文件,具体内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.java.maven</groupId>
<artifactId>helloworld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>helloworld</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.0.5.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 添加Spring支持 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-asm</artifactId>
<version>3.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</project>
4.创建TestWork.java文件,用来作为我们演示业务层的功能,具体内容如下:
package com.java.ingo.service;
/**
*@author 作者 E-mail:
*@version 创建时间:2016年2月27日下午3:46:37
*类说明
*/
public class TestWork {
public void sayHello(){
System.out.println("hello world");
}
}
5.创建HelloWord.java文件,用来作为控制层的功能演示,具体内容如下:
package com.java.ingo.helloworld;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.java.ingo.service.TestWork;
public class HelloWorld {
public static void main(String[] args) {
//首先读取配置文件,配置文件中的bean将会保存到ApplicationContext的实例中
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:beans.xml");
//从ApplicationContext的实例中按照id值获取对应类的实例对象,并且需要进行强制类型
TestWork tw = (TestWork) ac.getBean("helloworld");
//使用对象的内部方法,就像我们使用new创建的对象一样
tw.sayHello();
}
}
6.创建beans.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="helloworld" class="com.java.ingo.service.TestWork"></bean>
</beans>
我们逐一解释一下这份配置文件的含义:
a.<?xml version="1.0" encoding="UTF-8"?>表示这是xml文件的开头声明xml使用的版本,以及编码方式,其一般为通用配置。
b.xmlns表示XML Namespaces的缩写,中文名称是XML命名空间。这里使用的默认的命名空间:xmlns="http://www.springframework.org/schema/beans"。在xml文件中,标签都是我们自定义的,但是我们自定义的标签可能与别人定义的产生冲突,所以,这里我们需要使用一个命名空间来标识。可以理解命名空间是一个包的名称,包的名称是自定义的。包内部的方法,参数可能与别的包内部的重名,但是在两个包里面,那也就不需要担心冲突了。
c.xmlns:xsi表示xml文件遵守了xsi所定义的规范。这里xsi的全称是xml schema instance。它代替了后面的url地址,即“http://www.w3.org/2001/XMLSchema-instance“,特别的这里的xsi只是人们习惯上这么定义,我们当然可以换一个别的名称,无论怎么取,它都是url地址的别名。实际解析xml文档时,解析器就会按照url的地址规定的规则来解释当前的xml文档。
d.xsi:schemaLocation表示xml书写遵循的语法。schemaLocation是其一个属性,该属性由两部分组成:前半部分是命名空间的名称,后半部分是xsd的地址。这里作用是把这个地址表示的xml文件引进来,方便eclipse等开发工具判断xml是否符合语法。这里的作用等价于<import namespace="xxx" schemaLocation="xxx.xsd"/>。
e.bean表示我们的让spring托管的一个对象,这个对象的id是hellworld,id是class对象的别名,我们使用时调用这个id就表示调用后面的class表示的对象。特别的,这个id是唯一的,不能够重复。
7.测试方法:
运行helloworld.java中的main方法,即可看到控制台输出”hello world“字符串
--------------------------------------------------------------------------------------------------------------
至此,白话Spring(基础篇)---helloworld结束
特别备注:
最后我们给出一张实际的bean照片,来帮助理解这个spring中的bean,即spring所替我们封装后提供的服务,当然我们后面还会详细的介绍。
参考资料:
Spring官网:http://spring.io/docs
百度文库:spring
其他博文:http://blog.youkuaiyun.com/zhengyeqing520/article/details/6091656