第三章Spring的Hello World

来源:互联网 发布:php x86 x64 编辑:程序博客网 时间:2024/06/05 16:28

一、Hello World

    本节介绍使用spring来写一个简单的helloworld案例,项目编号【spring001helloworld。这一节详细介绍一下创建项目的过程,在没有建立web项目之前都是以这种形式来创建案例。

    第一步,创建项目,加入必备的jar包。

    我们在eclipse中新建一个普通的Java工程,命名为【spring001helloworld】。既然使用spring框架那么接下来我们导入在该工程中必须要使用的Jar包。这几个Jar包也是spring开发过程中所必需要的四个核心包,其中commons-logging.jarspring框架所依赖的日志包所以也必须添加进来。关于几个核心包的解释见下面的注解。

spring-beans-4.1.6.RELEASE.jar         

spring-context-4.1.6.RELEASE.jar        

spring-core-4.1.6.RELEASE.jar             

spring-expression-4.1.6.RELEASE.jar

commons-logging.jar                              

    注:spring-beansspring-core两个jar包主要提供了spring框架的基础能力,主要包括IOC和依赖注解两大特征,这两大特征在BeanFactory接口的基础上及其相应的衍生接口和类中得到了实现。在IOC部分详细讨论。

         spring-context是在CoreBeans的基础上建立的功能模块,他继承了BeansCore中的一些基本功能,同时增加了对诸如国际化、事件转播、资源载入、校验等等功能的扩展。而且对于JavaEE的特性也能支持,如EJBJMX等。该jar包的顶层接口是ApplicationContext,这个接口IOC容器中也扮演这重要的角色。这里顺便还提一下spring-context-support-4.1.6.RELEASE.jar包,从名字也可以看出它是context的扩展,支持一些集成的第三方库,如EhCacheJavaMailFrameMarker等。

        spring-expressionspring提供在运行时的一个查询和操作对象图的表达式语言。具体来讲,它支持通过name来检索IOC容器的对象,以及后面要介绍的SPEL技术。

        commons-logging.jarspring需要依赖的日志包。

   第二步,编写相应的java

    首先创建一个Person的实体类,标准的POJO比较简单代码如下,不再做相应的解释。

(在以后的案例中对与这种实体类只给出相应的属性信息,即private属性。

public class Person {private String name;public void hello() {System.out.println(name + "hello!");}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "HelloWorld [name=" + name + "]";}}

      编写一个含main方法的java类代码如下。通过创建容器,获取容器中的Bean实例,使用获得的Bean实例这三个步骤演示了一个标准使用spring框架的方式。其中涉及到了IOC容器,获取Bean知识点。关于代码的详细注释阅读下面的MainTest代码。这里还涉及到一个spring.xml配置文件的问题在下面说明。

(在以后的案例中MainTest.java都是作为测试类出现的,不再做过多的解释)。

import org.springframework.context.support.ClassPathXmlApplicationContext;import com.escore.beans.Person;public class MainTest {public static void main(String[] args) {/** *  一,创建 Spring 的 IOC 容器。 *  1,ClassPathXmlApplicationContext是通过获取类路径下的spring配置文件来创建容器。 */ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");/** * 二,使用容器获得Bean实例: * 1,有很多方法可以获取到实例对象,这里介绍两种方式。 * 2,第一种是通过在spring配置文件中的id属性名称来获取。 * 3,第二种是通过Bean的Class类型来获取, *   此种方式会有一定的问题,例如当你配置一个person1和persion2而且都是Person类型的, *   那么容器在获取的时候将无法判断是那一个。 */Person hw = (Person) ctx.getBean("person");//通过id获取。Person hw2 = ctx.getBean(Person.class);//通过Class属性获取。//三、使用获得Bean实例。hw.hello();System.out.println(hw2);ctx.close();//关闭容器。}}

     第三步,编写spring容器的配置文件。

     我们使用springIDE创建spring容器配置文件,选择Spring Bean Configuration File来生成。原始生成的配置文件,是不包含person的配置。由于在之前使用是通过获取类路径下的xml配置文件来创建的容器,那么这个配置文件也必须放在项目中src的类路径下,而且名称应该是spring.xml与之前的保持一致。关于的person Bean的详细说明见下面的配置文件。(除了person的配置以外,前面的xml配置就不讲了。beansspring的容器配置文件的命名空间,后面将还有很多其它的命名空间会用到,命名空间的引入是对配置文件的一种支持)。

(以后的项目中没有特殊说明我们一般默认把spring的xml配置文件就放到src的目录下面)。

<?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属性可以被spring容器的getBean方法找到(该方法重载还有很多其他的方式)。 class是对应的类; name是该bean的属性。  --><bean id="person" class="com.escore.beans.Person"><property name="name" value="Spring FrameWork"></property></bean></beans>

    通过上面三个步骤,初步的了解了如何在java项目中使用spring框架。在项目中我们使用了一个ClassPathXmlApplicationContext容器,还使用了它的获取Bean的方法,和如果配置spring的容器文件。下面将在IOC部分详细展开来说明。


0 0