码迷,mamicode.com
首页 > 编程语言 > 详细

spring 入门案例

时间:2015-07-29 21:26:31      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

spring开发步骤:

spring jar包介绍:

在3.0以下的版本,源码有spring中相关的所有包(包括spring核心包和依赖包)

在3.0以上版本,源码中只有spring的核心包 没有依赖包 依赖包需要自己下载

1)源码,jar包:spring-framwork-3.2.5.RELEASE

commons-logging-1.1.3.jar           日志

spring-beans-3.2.5.RELEASE.jar       bean节点

spring-context-3.2.5.RELEASE.jar      spring上下文节点

spring-core-3.2.5.RELEASE.jar        spring核心功能

spring-expression-3.2.5.RELEASE.jar   spring表达式相关表

以上是必须引入的5个jar包,在项目中可以用户管理!

2)核心配置文件:applicationContext.xml

spring配置文件:applicationContext.xml/bean.xml

约束参考:

spring-framework-3.2.5.RELEASE\docs\spring-framework-reference\htmlsingle\index.html

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:p="http://www.springframework.org/schema/p"

    xmlns:context="http://www.springframework.org/schema/context"

    xsi:schemaLocation="

        http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/context

        http://www.springframework.org/schema/context/spring-context.xsd">

   

</beans>  

入门案例:

User类

<span style="font-family:Courier New;">package cn.itcast.hello;

public class User {
	public User() {
		System.out.println("user对象创建了!");
	}
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	
}</span><strong>
</strong>
bean.xml文件

<<span style="font-family:Courier New;">beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:p="http://www.springframework.org/schema/p"
     xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans.xsd">
     <!-- 
     	默认情况下spring创建对象是单例的 singleton
     	prototype:多例的
     -->
     <bean id="user"  class="cn.itcast.hello.User" ></bean>	
	<bean id="user" lazy-init="true"   class="cn.itcast.hello.User" scope="singleton" init-method="init_user" destroy-method="destory_user"></bean>	
</beans></span>
测试类App

下面是两种创建IOC容器的方法,推荐第二种.

<span style="font-family:Courier New;">package cn.itcast.hello;

import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

public class App {
	@Test
	public void test(){
		//1.解析bean.xml文件、
		Resource resource=new ClassPathResource("bean.xml");
		//2.创建对象容器,bean的工厂 IOC容器=工厂类+配置文件
		BeanFactory factory=new XmlBeanFactory(resource);
		User user= (User) factory.getBean("user");
		System.out.println(user.getName());
	}
	@Test
	public void test2(){
		//这样可以直接得到IOC容器
		ApplicationContext ac=new ClassPathXmlApplicationContext("bean.xml");
		User user=(User) ac.getBean("user");
		System.out.println(user.getId());
		
	}

}</span>
运行结果:user对象不是通过new出来的而是使用 spring容器创建出来的!
细节问题:

我们把bean.xml配置文件中的配置user对象更改为:

<bean id="user" lazy-init="true"   class="cn.itcast.hello.User" scope="singleton" init-method="init_user" destroy-method="destory_user"></bean>
同时在User类中添加一个无惨的构造函数一个初始化的方法以及一个对象销毁的方法

<span style="font-family:Courier New;">public User() {
		System.out.println("user对象创建了!");
	}
public void init_user(){
		System.out.println("user对象初始化了!");
	}
	public void destory_user(){
		System.out.println("user对象销毁了!");
	}</span>
测试类App2

<span style="font-family:Courier New;">package cn.itcast.hello;

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

public class App2 {
	@Test
	public void test(){
		ClassPathXmlApplicationContext ac=new ClassPathXmlApplicationContext("bean.xml");
		System.out.println("IOC容器创建了!");
		User user1=(User) ac.getBean("user");
		User user2=(User) ac.getBean("user");
		System.out.println(user1);
		System.out.println(user2);
		//对象的销毁方法要显示的调用 接口 中没有销毁的方法需要使用实现类调用destroy()方法
		ac.destroy();
	}
}
</span>
测试单例bean.xml中scope="singleton":

技术分享

测试多例bean.xml中scope="prototype"
技术分享

总结:

 * 1) 对象创建:单例/多例

     * scope="singleton", 默认值,默认是单例  service/dao/工具类】

     *  scope="prototype", 多例;                 Action对象】

     *

     * 2) 什么时候创建?

     *   scope="prototype"  在用到对象的时候,才创建对象。

     *    scope="singleton"  在启动(容器初始化之前)就已经创建了bean,且整个应用只有一个。

     * 3)是否延迟创建

     *   lazy-init="false"  默认为false, 不延迟创建,即在启动时候就创建对象

     *   lazy-init="true"   延迟初始化,在用到对象的时候才创建对象

     *    (只对单例有效)

     * 4) 创建对象之后,初始化/销毁

     *   init-method="init_user"       【对应对象的init_user方法,在对象创建爱之后执行

     *   destroy-method="destroy_user"  【在调用容器对象的destriy方法时候执行,(容器用实现类)

版权声明:本文为博主原创文章,未经博主允许不得转载。

spring 入门案例

标签:

原文地址:http://blog.csdn.net/u014010769/article/details/47132849

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!