Spring的第一个程序

1.开发的步骤(总概述)

(1).准备jar包

(2).开发HelloWorld程序

(3).在applicationContext.xml中完成配置(xsd-config.html)

(4).启动容器,从容器中得到bean,调用bean中的方法

2.步骤

(1).要导入的jar包

spring-core-3.2.0.RELEASE.jar

spring-beans-3.2.0.RELEASE.jar

spring-context-3.2.0.RELEASE.jar

spring-expression-3.2.0.RELEASE.jar

com.springsource.org.apache.commons.logging-1.1.1.jar

(2).普通的POJO类

package cn.wwh.www.spring.aaa.helloworld;

/**
 *类的作用:
 *
 *
 *@author 一叶扁舟
 *@version 1.0
 *@创建时间: 2014-9-21   下午03:22:26
 */
public class HelloWorld {

	public  void show() {

		System.out.println("Hello World! This is my first Spring!");

	}

}

(3)配置helloworld.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
		http://www.springframework.org/schema/beans/spring-beans.xsd">
	<!--
		id:bean的唯一标识
		class:类的全限定名:不能是抽象类,不能是接口.
		Object obj=Class.forName("cn.wwh.www.spring.aaa.helloworld.HelloWorld").newInstance();
	-->
	<bean id="helloworld" class="cn.wwh.www.spring.aaa.helloworld.HelloWorld">
	</bean>
</beans>

在applicationContex.xml文件中引用

helloworld.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
		http://www.springframework.org/schema/beans/spring-beans.xsd">
	<!--
		引入其他配置文件:
		默认从当前路径去找文件.
		可以带上路径前缀:
		classpath:表示从classpath路径去找文件(推荐)
			file:表示从磁盘中去找文件
			<import resource="file:D:\Users\Administrator\Workspaces\MyEclipse 8.5
			\SpringExercise1\src\cn\wwh\www\spring\aaa\helloworld\helloworld.xml"/>
		注意:只有Resource接口才能识别和解析这种前缀:/SpringExercise1/src/cn/wwh/www/spring/aaa/helloworld/helloworld.xml
		 -->

	<import resource="classpath:cn/wwh/www/spring/aaa/helloworld/helloworld.xml"/>

</beans>

(4).测试案例

package cn.wwh.www.spring.aaa.helloworld;

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

/**
 *类的作用:
 *
 *
 *@author 一叶扁舟
 *@version 1.0
 *@创建时间: 2014-9-21 下午03:25:12
 */
public class TestHelloWorld {

	// 1.采用传统的方式进行方法调用
	@Test
	public void testOld() {
		// 创建一个对象
		HelloWorld hello = new HelloWorld();
		hello.show();

	}

	//采用Spring框架的控制反转的方式调用
	@Test
	public void testIoC(){
		//1.加载applicationContext.xml文件:从classpath路径路径找
		Resource resource = new ClassPathResource("applicationContext.xml");
		//2.创建并获取Spring容器
		BeanFactory bean = new XmlBeanFactory(resource);
		//3.获取指定的bean,(特别要注意这个,getBean中的参数是,hellowrld.xml文件中bean标签中的id)
		HelloWorld hello = (HelloWorld) bean.getBean("helloworld");
		//4.操作bean
		hello.show();

	}
}

效果测试图:

3.注意:1.本人resources文件夹放在工程目录下,是和src同一个的目录,applicationcontext.xml文件就放在该文件夹中

    2.引入其他配置文件:

默认从当前路径去找文件.

可以带上路径前缀:

classpath:表示从classpath路径去找文件(推荐)

file:表示从磁盘中去找文件

<import resource="file:E:\Users\Administrator\Workspaces\MyEclipse 8.5

\SpringExercise1\src\cn\wwh\www\spring\aaa\helloworld\helloworld.xml"/>

特别要注意:只有Resource接口才能识别和解析这种前缀:/SpringExercise1/src/cn/wwh/www/spring/aaa/helloworld/helloworld.xml

    3.在helloworld.xml文件中<bean>标签下:

               bean元素的id和name:

最好用id:特殊情况才使用name.

Spring开发中 Bean的 id属性 ,遵守xml语法ID约束:

id 的命名要满足XML对ID属性命名规范 必须以字母开始,可以使用字母、数字、连字符、下划线、句话、冒号

使用name属性,就可以使用很多特殊字符,早期在struts1和spring整合 (现在的SpringMVC)

<bean name="/login" class="....LoginAction" />  name中含有/ ,使用id会报错 

4.HelloWorld程序从Spring的角度看: 为什么配置一下,Spring就会去创建/管理Bean对象.

(1).通过Resource对象加载配置文件;

(2).解析配置文件,得到bean;

(3).解析bean,id作为bean的名字,class用于反射得到bean的实例(Class.forName(className));

注意,这种配置下,所有的bean保证有一个无参数构造器

(4).调用getBean的时候,从容器中返回对象实例

结论:就是把代码从JAVA文件中转移到了XML中.

5.getBean方法的三种方法:

(1).按照类型获取bean:

world=factory.getBean(HelloWorld.class);

要求在spring中只配置一个这种类型的实例;

若该类型的类配置了多个<bean/>,就要报错:--一个类型可以找到多个对象

(2).按照bean的名字获取bean:

world=(HelloWorld)factory.getBean("hello2");

按照名字拿bean不太安全;

异常:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ‘helloWorld‘ is defined:

在容器中找不到一个<bean/>元素的id或name叫helloWorld.

(3).按照名字和类型:(推荐)

world=factory.getBean("hello", HelloWorld.class);

异常:

org.springframework.beans.factory.NoSuchBeanDefinitionException:

No unique bean of type [cn.itcast.cd.day1._1hello.HelloWorld] is defined:

不唯一的Bean类型错误:

时间: 2024-10-25 08:59:35

Spring的第一个程序的相关文章

Spring Boot第一个程序

一.创建一个Maven项目 在setting里设置本地的Maven 然后Create New Project ,选择Maven项目,选择JDK 二.项目创建完毕后打开pom文件,并在其中添加如下代码 <!--SpringBoot的依赖--><parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactI

一步一步学Spring.Net——第一个程序“Hello,World”

1.新建一个类Framework.cs public class Framework { public Framework() { // //TODO: 在此处添加构造函数逻辑 // } public string Name { set; get; } } 2.在Index.aspx页面添加一个label <div> <h1><asp:Label runat="server" ID="lblFramework"></asp:

Spring写第一个应用程序

ref:http://www.importnew.com/13246.html 让我们用Spring来写第一个应用程序吧. 完成这一章要求: 熟悉Java语言 设置好Spring的环境 熟悉简单的Eclipse IDE的操作 如果你还没有设置好环境,请参考Spring开发环境的配置. 我们第一个程序是打印"Hello World"语句,这个语句通过Spring的配置文件来设置. 1 – 新建Java项目: 第一步用Eclipse IDE新建一个项目. 点击 > File >

Spring框架第一天

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption

SpringMvc 入门接触的第一个程序

1.Spring MVC简介 Spring MVC框架是有一个MVC框架,通过实现Model-View-Controller模式来很好地将数据.业务与展现进行分离.从这样一个角度来 说,Spring MVC和Struts2非常类似.Spring MVC的设计是围绕DispatcherServlet展开的,DispatcherServlet负责将请求派发到特定的handler.通过可配置的 handler mappings.view resolution.locale以及theme resolut

java基础--JDK安装、环境变量配置、工具开发第一个程序、数据类型、运算符

**-----Java基础大纲-----**   **-----本章节-----** 1.Java语言的历史.特点及工作原理 2.JRE和JDK的介绍 3.Java运行环境和开发工具 4.Java基础语法 **-----下一章节-----** 5.条件语句 6.循环 7.数组 ============================================== 一:历史及开发准备 1.Java发展历程及来源 (1)发展历程 1996年1月,Sun公司发布了Java的第一个开发工具包(JD

Linux下C++的编程——开发环境搭建与第一个程序

上一篇文章Linux下C++的编程--开偏介绍中我们已经介绍了GUN.GCC.G++等一些重要的概念,现在应该开始动手实践了! 开发工具的安装 环境 Distributions版本:CentOS 6.7 Linux内核片:2.6.32-573.3.1.el6.i686 一般Linux安装完之后默认就已经安装了GCC(GNU Compiler Collection),你可以查看一下gcc和g++的版本号检查gcc和g++是否已经安装. [luowf@luoweifu ~]$ gcc -v gcc

日更第2期-2015-1-15-openFrameworks系列第一讲-手把手制作openFrameworks上的第一个程序!

恩,今天和朋友打球来着,于是今天的案例程序就做一个球吧!O(∩_∩)O哈哈~ 首先,没有看过上一篇教程的同学,还有还没有下载好VS和OpenFrameworks的同学,都去下一下. 传送地址:http://www.cnblogs.com/linongbo/p/4227552.html 那么,开始今天的日更啦! Hello OpenFrameworks! VS的安装部分我就不说了,不过我个人建议——默认是安装在C盘的,不过你要是手动改到别的盘上的话,C盘上 依然会有6G左右的内容.......Σ(

[Fluent NHibernate]第一个程序

目录 写在前面 Fluent Nhibernate简介 基本配置 总结 写在前面 在耗时两月,NHibernate系列出炉这篇文章中,很多园友说了Fluent Nhibernate的东东,也激起我的兴趣,想对它一探究竟,这里也将Fluent Nhibernate写成一个系列,记录自己的学习过程,关于这东东,也是第一次接触,也只能边摸索,边记录了.如果有描述错误的地方,还望多多包涵. 通过Nhibernate的学习,都觉得Nhibernate的使用映射文件的编写很麻烦,这里通过Fluent Nhi