001- Spring入门及maven构建spring的web项目

Spring入门

1、Spring作用

   Spring提供了一个管理Bean组件的容器,该容器还提供了IOC和AOP特性。基于实现组件之间的解耦、组件的重复利用,提高程序灵活性。

1.1、IOC

    IOC Inversion Of Controll 反向控制,是一种设计思想。在Spring中,是指将对象的控制权交给Spring容器管理。

    控制权:可以指定调用关系,可以创建对象,可以管理和释放对象。

 

 传统的程序设计:使用者(客户端类)需要创建使用类(用户类)、使用类(用户类)的依赖类(用户信息类)、装配他们及使用完销毁他们。

 

使用IoC思想后:使用者(客户端)只需要从IoC容器中获取使用类(用户类)

1.2、AOP

  Aspect Oriented Programming面向方面编程。

  面向方面编程优点:将共通处理封装成了一个独立组件,利用配置形式作用在了某一批目标对象上,实现组件的重复利用,将切面和目标对象解耦,实现了低耦合应用。如:日志记录,事务处理,异常处理等等

2、基本使用

2.1、获取bean

通过ApplicationContext对象的getBean("bean配置的id")方法获取。

 

以下是获取ApplicationContext对象方法:

a、 在初始化时保存

ApplicationContext ac = new ClassPathXmlApplicationContext ("applicationContext.xml");

说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。

 

b、通过具类获取

ac1= WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc);

ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);

这种方式适合于采用Spring框架的B/S系统,通过ServletContext对象获取ApplicationContext对象,然后在通过它获取需要的类实例。

上面两个工具方式的区别是,前者在获取失败时抛出异常,后者返回null。

 

c、 继承自抽象类或接口

1)、抽象类ApplicationObjectSupport、WebApplicationObjectSupport提供getApplicationContext()方法,

Spring初始化时,会通过该抽象类的setApplicationContext(ApplicationContext context)方法将ApplicationContext 对象注入。

2)、实现ApplicationContextAware接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 对象。

Spring初始化时,会通过该方法将ApplicationContext对象注入。

 

2.2、bean基本配置

id属性:组件的在容器中的标识符.
name属性:功能与id属性一样,区别在于name可以使用特殊字符;id不允许
class属性:指定组件类型
scope属性:指定组件对象创建模式。支持singleton(默认)和prototype。
singleton:指的是bean组件对象采用单例模式创建。值:true、false
prototype:指的是每次调用ac.getBean(),都会创建一个新的Bean对象返回。值:true、false

  Bean组件在容器中的创建和销毁
  a.如果bean定义scope采用非单例模式,该对象在调用ac.getBean()创建,使用完毕后,由垃圾回收器负责销毁
  b.如果bean定义scope采用singleton(默认)
  创建时机:在容器实例化时创建(默认)
  销毁时机:在容器销毁时销毁,调用AbstractApplicationContext的close()方法.

init-method:指定对象初始化方法;
destroy-method:指定对象销毁方法.
lazy-init:对象创建延迟到调用ac.getBean("")方法.如果需要将容器中所有scope="singleton"组件都采用延迟创建,可以在<beans default-lazy-init="true">

 

3、demo

本例使用工程名:004maven_spring,tomcat中间件端口:8080

创建maven的web项目参照:maven项目与myEclipse

3.1、pom.xml配置

在pom.xml的dependencies元素添加子元素:

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-web</artifactId>
	<version>2.5.6</version>
</dependency>

3.2、web.xml配置

在web.xml的web-app元素添加子元素:

  <context-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
  </context-param>
 
  <listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

3.3、添加User类

在/src/main/java目录添加包:com.cft.demo.spring,再添加User类:

package com.cft.demo.spring;

public class User {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

3.4、添加文件applicationContext.xml  

 在/src/main/config目录下新建applicationContext.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"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd" >
            
   <bean id="user"  class="com.cft.demo.spring.User"/>     
                       
</beans>

3.5添加spring.jsp 

在/src/main/webapp添加spring.jsp:

<%   org.springframework.context.ApplicationContext ac = org.springframework.web.context.support.WebApplicationContextUtils.getWebApplicationContext(application); 
	 com.cft.demo.spring.User user = (com.cft.demo.spring.User)ac.getBean("user"); 
		user.setName("cft");%>
<%=user.getName() %>

3.6验证测试  

 浏览器输入url:http://localhost:8080/004maven_spring/spring.jsp

出现以上界面说明配置成功。

 

posted on 2015-08-04 11:39  陈福涛  阅读(194)  评论(0)    收藏  举报