Spring配置

一、Spring配置步骤

(1)导入spring的jar包

        Spring的jar包很多,我们这里只需要必须的包和Spring的依赖包,其它的根据需要再加。这些jar包分别是:

        aopalliance-1.0.jar
        commons-logging-1.1.1.jar
        spring-aop-3.1.1.RELEASE.jar
        spring-asm-3.1.1.RELEASE.jar
        spring-beans-3.1.1.RELEASE.jar
        spring-context-3.1.1.RELEASE.jar
        spring-core-3.1.1.RELEASE.jar
        spring-expression-3.1.1.RELEASE.jar

        其中,”commons-logging-1.1.1.jar“是Spring 的依赖包。

(2)创建类

        创建一个Hello.java类,以便后续测试能够进行对象的创建进行测试,内容如下:

package com.uni2uni.spring.model;
public class Hello {
 public String hello(){
  return "Hello,world!";
 }
}

(3)创建spring-conf.xml

        在src目录下面创建spring-conf.xml。(注:名字和路径可自定义)

        ”spring-conf.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/spring-beans-3.0.xsd
">

 <bean id="hello" class="com.uni2uni.spring.model.Hello" />
</beans>

(4)测试配置是否正确

        创建测试类,内容如下:

package com.uni2uni.spring.unit;
import junit.framework.TestCase;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.uni2uni.spring.model.Hello;
public class TestSpring extends TestCase{
 private BeanFactory factory=new ClassPathXmlApplicationContext("spring-conf.xml");
 
 public void TestHello(){
  
  Hello hello = (Hello)factory.getBean("hello");
  //或者像下面这样调用也可以        
  //Hello hello = factory.getBean("hello",Hello.class);
  System.out.println(hello.hello());
 }
}

        然后运行单元测试,如果能够输出“Hello,world!”则证明Spring配置正确。        

二、知识扩展

(1)在Maven项目中配置spring依赖

        在“pom.xml”文件中加入如下代码:

<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
   <version>3.1.1.RELEASE</version>
</dependency>

(2)scope属性及作用域介绍

        在本例中的“spring.xml”文件中有如下代码:

<bean id="hello" class="com.uni2uni.spring.model.Hello" />

        这行代码省略了scope属性,它等效于下面的代码:

<bean id="hello" class="com.uni2uni.spring.model.Hello" scope="singleton" />

        scope属性可选值有:“singleton”(默认)、“prototype”、“request”、“session”、“global session”。

        singleton:默认值,为单例。Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。

        prototype:多例。作用域为部署的bean,每一次请求(将其注入到另一个bean中,或者以程序的方式调用容器的 getBean()方法)都会产生一个新的bean实例,相当与一个new的操作,对于prototype作用域的bean,有一点非常重要,那就是Spring不能对一个prototype bean的整个生命周期负责,容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,随后就对该prototype实例不闻不问了。

        request:表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效。

        session:session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效。

        global session:类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个 portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么web会自动当成session类型来使用。

        Spring2.0在WebApplicationContext中还为Bean添加了三个新的作用域:request作用域、session作用域和global session作用域。而在非Web应用的环境下,Bean只有singleton和prototype两种作用域。


你可能感兴趣的:(Spring配置)