`
Luob.
  • 浏览: 1588716 次
  • 来自: 上海
社区版块
存档分类
最新评论

Spring 简单应用

阅读更多
下面使用的 spring-3.0版本来演示

目标任务
1.配置最简单的,spring 应用 
2.使用spring管理ServiceBean
3.手动编写代码 模拟 spring的初始工作



1.首先来看 spring 应用中最基本的jar




2.spring的配置文件 (可以从spring的文档中拷贝,或者 spring自带的 案例中拷贝)
<?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/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/beans   
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd "> 

</beans> 


3.就这样 我们就可以 来初始化 spring 容器  编写单元测试
package junit.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringTest {

	@Test //测试 spring的 初始化
	public void init(){
		ApplicationContext context=new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
		
	}
}


//上面 如果测试单元没有问题 就说明 spring 框架 使用成功 !! 恭喜 !!

4.下面 来看 使用 spring容器来管理我们的 bean (首先定义bean--->然后配置)
package com.person.service;

public interface PersonService {
	public void save();
}


package com.person.service.impl;

import com.person.service.PersonService;

public class PersonServiceBean implements PersonService {
	public void save(){
		System.out.println("我就是save方法!");
	}
}


5.在spring配置文件中配置
<?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/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/beans   
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd "> 

	<!-- 这里配置后 就会有 spring来管理, 注意id 和name 的区别  -->
	<bean id="personService" class="com.person.service.impl.PersonServiceBean">
	</bean>
</beans>   
 


6.测试
package junit.test;

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

import com.person.service.PersonService;

public class SpringTest {

	@Test //测试 spring的 初始化
	public void init(){
		ApplicationContext ctx=new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
		
		
		//方法一  获取服务层对象
		PersonService personService=(PersonService)ctx.getBean("personService");
		//方法二
		PersonService personService1=ctx.getBean("personService",PersonService.class);
		
		personService.save();
		personService1.save();
		
	}
}


//如果能在控制台 打印出  "我就是save方法!" 恭喜成功!

7.看了上面这么多  那么spring到底怎么初始化 和 管理的 我们的bean呢? 我们自己来模拟写一个 spring的 init 初始工作 (使用 dom4j 来读取配置文件 -->使用 反射来创建对象)



8.首先加入  dom4j-1.6.1.jar 和  jaxen.jar(dom4j需要的一个jar)

9.定义隐射spring配置文件bean 的类

package junit.test;

/**
 * 定义  保存 spring配置文件中的bean对象
 * @author Bin
 */
public class BeanDefinition {
	
	private String id;  //对应 spring配置文件中的id
	private String className;   //对应 spring配置文件中的class 
	//get set
       // 构造方法 
}


10.定义 我们自己的 读取spring配置文件中的 ClassPathXmlApplicationContext 类
package junit.test;


import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.XPath;
import org.dom4j.io.SAXReader;

import com.sun.xml.internal.fastinfoset.stax.events.Util;


/*
 * 来模拟spring 的工作
 */
public class MySpringClassPathXmlApplicationContext {
	
	//保存 配置文件中的 bean 的信息  
	private List<BeanDefinition> beandefines=new ArrayList<BeanDefinition>();
	
	
	//保存初始化 后的对象
	private Map<String,Object> sigletons=new HashMap<String,Object>();
	
	
	public MySpringClassPathXmlApplicationContext(String fileName) {
		this.readXml(fileName);
		this.instanceBean();
	}

	/**==================
	 *   读取xml配置文件
	 * ==================
	 * @author Bin
	 * @param fileName
	 */
	private void readXml(String fileName) {
		SAXReader saxReader=new SAXReader();
		Document doucment=null;
		try {
			URL xmlPath=this.getClass().getClassLoader().getResource(fileName);
			doucment=saxReader.read(xmlPath);
			Map<String,String> nsMap=new HashMap<String,String>();
			//给spring配置文件的命名空间  一个别名 ns
			nsMap.put("ns","http://www.springframework.org/schema/beans"); //加入命名空间  xmlns: spring配置文件中的
			XPath xsub=doucment.createXPath("//ns:beans/ns:bean"); //创建 beans/bean 查询路径
			
			xsub.setNamespaceURIs(nsMap); //设置命名空间
			List<Element> beans=xsub.selectNodes(doucment); //获取文档下的所有bean节点
			
			for (Element element : beans) {
				String id=element.attributeValue("id"); //获取 id的属性值
				String clazz=element.attributeValue("class"); // 获取 class属性

				//类是 spring中的 : org.springframework.beans.factory.config.BeanDefinition;
				BeanDefinition beandefine=new BeanDefinition(id,clazz);
				beandefines.add(beandefine);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**===================================
	 *   完成Bean 的实例化
	 * ===================================
	 * @author Bin
	 */
	private void instanceBean() {
		for (BeanDefinition beandefine : beandefines) {
			try {
				if(!Util.isEmptyString(beandefine.getClassName()))
					sigletons.put(beandefine.getId(), Class.forName(beandefine.getClassName().trim()).newInstance());
			}catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	/**=======================
	 *    获取bean 
	 * =====================
	 * @param beanName
	 * @return
	 */
	public Object getBean(String beanName){
		return this.sigletons.get(beanName);
	}
	
}


11.好啦 我们来测试吧

	@Test  //测试 自定义的spring 模拟器
	public void testMySpring(){
		MySpringClassPathXmlApplicationContext ctx=new MySpringClassPathXmlApplicationContext("applicationContext.xml");
		//方法一  获取服务层对象
		PersonService personService=(PersonService)ctx.getBean("personService");
		personService.save();
	}



//如果  同样看到  "我就是save方法!"  我想 你应该对spring有所了解了吧??  嘻嘻
//睡觉啦 呵呵  88
  • 大小: 44.3 KB
1
2
分享到:
评论

相关推荐

    spring简单应用jar包

    这个“spring简单应用jar包”集合对于初学者来说是一个宝贵的资源,它包含了运行一个基本Spring应用程序所需的核心组件。 首先,我们要关注的是"log4j.jar",这是一个广泛使用的日志记录库。在Java开发中,日志记录...

    spring 简单应用

    在"Spring简单应用"中,我们通常会涉及以下几个关键点: 1. **IoC容器**:Spring的IoC容器是整个框架的中心,负责管理对象的生命周期和对象间的依赖关系。我们可以通过XML配置文件或Java配置类来定义这些关系。 2....

    spring1框架的简单应用介绍

    Spring框架是中国最流行的Java企业级应用开发框架之一,它的出现极大地简化了Java应用程序的构建,尤其是在服务端。Spring的核心设计理念是依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented ...

    一个简单的spring的应用

    在这个"一个简单的spring的应用"项目中,我们将探讨如何搭建一个基础的Spring环境并进行单元测试。 首先,我们需要理解Spring的核心概念——依赖注入(Dependency Injection,简称DI)。DI允许我们解耦组件间的依赖...

    使用 Spring Boot 快速构建 Spring 框架应用

    例如,在提供的代码清单 1 中,可以看到如何定义一个简单的 Spring Boot 应用的 POM 文件,其中指定了 Spring Boot 的版本和 `spring-boot-starter-web` 依赖。 通过这种方式,Spring Boot 实现了快速构建和运行 ...

    一个简单的Spring应用例子

    这个“一个简单的Spring应用例子”应该包含了一个基本的Spring配置和应用的构建结构,适合初学者理解和学习。 首先,我们来看一下这个压缩包中的文件: 1. `.classpath`:这是Eclipse IDE的一个项目配置文件,记录...

    Spring的简单应用

    这个主题"Spring的简单应用"将引导我们探索Spring框架的基础知识和核心特性。 首先,Spring的核心是依赖注入(Dependency Injection,DI)。依赖注入允许开发者在运行时将对象之间的依赖关系解耦,使得代码更加灵活...

    spring vue简单示例

    在本教程中,我们将探讨如何使用Spring Boot和Vue.js构建一个简单的Web应用程序。Spring Boot是Java领域的一个流行框架,用于简化Spring应用的初始搭建以及开发过程。Vue.js则是一款轻量级的前端JavaScript框架,以...

    简单spring mvc应用

    主要是对java spring,spring mvc等知识链条学习归纳,实现了前端jsp和后端spring交互的简单mvc应用,项目已经实现拦截器、过滤器和监听器,数据CURD简单操作,附mysql包。环境:开发工具-idea,mysql + java13 + ...

    spring MVC简单示例

    在本示例中,我们将深入探讨Spring MVC的基本概念、配置以及如何创建一个简单的应用程序。 1. **Spring MVC 概述** Spring MVC 是 Spring 框架的一部分,它简化了开发和测试Web应用程序的过程。通过分离业务逻辑、...

    Spring就这么简单

    Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单...

    spring boot 简单案例下载

    在压缩包文件 `spring-boot` 中,可能包含了创建简单 Spring Boot 应用的源代码,包括主配置类、控制器、实体类和配置文件等。通过分析这些示例,你可以更好地理解 Spring Boot 如何工作,以及如何将这些概念应用到...

    spring4.X企业开发应用实战

    《Spring 4.x 企业开发应用实战》这本书深入探讨了Spring框架在企业级应用程序开发中的应用,涵盖了Spring 4.x版本的重要特性和最佳实践。Spring作为Java生态系统中最受欢迎的轻量级框架,它提供了全面的解决方案,...

    spring一些简单的例子

    在这个名为"spring一些简单的例子"的压缩包中,你可能会找到一系列帮助初学者理解并掌握Spring框架基础知识的代码示例。以下是一些相关的知识点和详细说明: 1. **依赖注入(Dependency Injection)**:Spring的...

    Spring Boot应用开发框架 v2.6.14.zip

    5. **Spring Boot CLI**:命令行接口允许快速创建和运行Spring应用程序,通过编写简单的Groovy脚本。 6. **YAML配置**:除了传统的Java properties配置文件外,Spring Boot还支持使用YAML格式的配置文件,这种格式...

    生成一个简单的Spring Boot应用程序.pdf

    ### 生成一个简单的Spring Boot应用程序 #### 概述 本文档旨在指导读者通过具体步骤创建一个简单的Spring Boot Web应用程序——“Hello World!”示例。这个示例应用将帮助理解Spring Boot的一些核心特性,如自动...

    spring boot 简单项目搭建

    Spring Boot 是一个由 Pivotal 团队开发的框架,旨在简化 Spring 应用程序的初始搭建以及开发过程。它集成了大量常用的第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz 等,使得开发者能够快速地创建一个...

    spring 的简单例子工程适合初学者

    Spring 提供了一个全面的编程和配置模型,使得开发 Java 应用程序变得更加简单。这个"spring 的简单例子工程"是为了帮助初学者快速理解和入门 Spring 框架。 **数据库连接与Spring** 在 Spring 中,数据库连接通常...

    spring简单示例

    "spring简单示例"可能包含了一些基本的Spring配置和使用案例,让我们来深入探讨一下Spring框架的关键概念和功能。 1. **依赖注入**:Spring框架的核心特性之一是依赖注入,它允许开发者在运行时动态地将依赖关系...

    Spring4 In Action-5.2.2-Spring Web应用程序-简单的控制器实现跳转

    在本主题中,我们将深入探讨Spring框架的Web应用程序开发,特别是如何通过简单的控制器来实现页面间的跳转。《Spring4 In Action》是Spring框架的经典学习资料,第五版的2.2章节聚焦于Spring MVC,它是Spring框架...

Global site tag (gtag.js) - Google Analytics