spring 入门案例

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方法时候执行,(容器用实现类)】

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

时间: 2024-12-19 13:41:20

spring 入门案例的相关文章

Spring入门案例 idea创建Spring项目

spring入门案例 idea创建spring项目 Spring介绍 Spring概述 Spring是一个开源框架,Spring是2003年兴起的轻量级java开发框架,由Rod Johnson 在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原形衍生而来.它是为了解决企业级开发的复杂性而创建的.Spring使用基本的javaBaen来完成以前只可能由EJB完成的事情,然而Spring的用途不仅限于服务器端的开发,从简单性.

spring入门案例分析及原理

Springmvc执行原理: 一. 入门案例的执行流程 1. 当启动Tomcat服务器的时候,因为配置了load-on-startup标签,所以会创建DispatcherServlet对象,就会加载springmvc.xml配置文件2. 开启了注解扫描,那么HelloController对象就会被创建3. 从index.jsp发送请求,请求会先到达DispatcherServlet核心控制器,根据配置@RequestMapping注解找到执行的具体方法4. 根据执行方法的返回值,再根据配置的视图

分分钟教会大家第一个Spring入门案例

1.下载Spring jar包,并添加到项目中. 官网地址http:springsource.org 2.在项目中新建一个类      package cn.test; public class HelloSpring { // 定义属性,该属性的值将通过Spring框架进行设置 private String result; /** * 定义一个打印的方法用于输出result的值 */ public void print() { System.out.println("Hello" +

Spring_第一个Spring入门案例

今天我们来写我们的第一个spring 第一步 建立一个java project 第二步 添加我们的五个jar文件 第三步 在项目中建立一个com.zk.spring包 第四步 建立我们的userservice接口和userserviceImpl.java文件 在我们的UserService和UserServiceImpl添加 第五步 在我们的项目中写一个ApplicationContext.xml文件,放在src目录下,并在ApplicationContext.xml文件中添加如下代码: 最后写

SSM应用(一)--Spring入门

Spring是什么 Spring是一个框架: Spring是一个容器框架: Spring用于管理bean(Java类),并维护bean(Java类)之间的关系: 容器框架:整个web都属于Spring来管理,Spring可以管理web层.业务层.dao持久层,每一层都是由Java类(bean)组成的,Spring能够管理所有的bean,并且维护bean之间的关系: Spring的核心机制 Bean: 可以是Java中的任何对象,可以是JavaBean/service/servlet/dao,Sp

ActiveMQ入门案例以及整合Spring的简单实用

先来个ActiveMQ介绍哈: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法,是一个消息中间件. 应用场景:为了实现系统之间的通信,把系统之间的调用耦合度降低就可以使用MQ. 1) activeMQ 是Apache出品,最流行的,能力强劲的开源消息总线. 2) avtiveMQ主要特点:完全支持JMS1.1和J2EE 1.4规范:支持spring,很容易内嵌到spring中:支持ajax. 3) activeMQ的消息形式: a) 点对点形式,即生产

1.Spring框架入门案例

一.简单入门案例 入门案例:IoC 1.项目创建与结构 2.接口与实现类 User.java接口 package com.jd.ioc; /** * @author weihu * @date 2018/8/8/008 22:29 * @desc 用户接口 */ public interface User { void addUser(); } UserImpl.java实现类 package com.jd.ioc.impl; import com.jd.ioc.User; /** * @aut

SpringMVC入门案例及请求流程图(关于处理器或视图解析器或处理器映射器等的初步配置)

SpringMVC简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 Spring结构图 SpringMVC请求流程图 SpringMVC请求流程图语述: request-------->DispatcherServler(中央调度器/前端控制器)-----> HandlerMapping(处理器映射器)------>返回一个执行链----->将执行链转交给HandlerAdap

MyBatis入门案例 增删改查

一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybat