讲解Spring、讲解 Eclipse for Java程序、辅导Web Project

- 首页 >> Java编程

实验一Spring (IoC & DI)

一、实验目的

1.熟悉 Eclipse for Java EE开发环境

2.理解Spring框架的控制反转和依赖注入原理

二、实验步骤

1.创建项目

在Eclipse中创建一个Dynamic Web Project


2.添加Spring相关JAR包

将相关jar包复制到lib文件夹下


3.编写接口部分的代码

在项目中创建cn.edu.sdju.soft.dao包

编写一个Machine接口,并设计接口中的方法calculate()。


4.编写接口的实现类

在项目中创建cn.edu.sdju.soft.dao.impl包

至少编写这个接口的两个实现类,这些实现类要有不同的输出信息。


5.控制反转功能的实现


在项目中创建cn.edu.sdju.soft.test包

编写一个测试类,用来实现控制反转功能。

实现类代码要点:

a)在静态上下文中访问applicationContext.xml文件

b)创建ApplicationContext的对象,并调用ApplicationContext的getBean()方法获取Spring创建的实例。

c)代码编写步骤

i.获取ApplicationContext 对象,调用ClassPathXmlApplicationContext类或FileSystemXmlApplicationContext的构造方法即可。Spring配置文件的名字(applicationContext.xml)字符串作为构造方法的参数。

ii.调用ApplicationContext的getBean()方法,实例化实现类。

getBean()方法的两种调用方法

Object getBean(String id);

Object getBean(Clazz c);

其中id为需要实例化的类在Spring配置文件中的id, c为需要实例化的类在Spring配置文件中的类型信息,即“类名.class”。


例如:

TestDemo tDemo = (TestDemo)ac.getBean(“aaa”);

TestDemo tDemo = (TestDemo)ac.getBean(TestDemo.class);

iii.获取对象并调用实现类的相关方法。


6.编写Spring的配置文件


将两个实现类在Spring的配置文件中注册。Spring配置文件的内容:

<?xmlversion="1.0"encoding="UTF-8"?>

<beansxmlns="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-4.3.xsd">

<beanid="自定义部分"class="对应类的全限定名"></bean>

</beans>


7.编写一段代码,测试Spring配置的效果

运行test包中的测试类代码,看看在不显示实例化两个实现类的情况下,能否调用实现类的方法。


8.依赖注入功能的实现

a)在项目中创建cn.edu.sdju.soft.service包和cn.edu.sdju.soft.service.impl包。

b)在cn.edu.sdju.soft.service包中创建Service接口,并设计接口中的calculate()方法。

c)在cn.edu.sdju.soft.service.impl.包中创建Service接口的实现类,一个足够。这个实现类首先定义dao属性(Machine接口定义在dao包,称其为dao属性),即

private Machine mac;

d)设计对属性的setter()方法。之后实现service接口中的calculate()方法。这个calculate()方法可以调用dao接口中的calculate方法。

e)在Spring配置文件中对刚刚编写的service实现类进行注册。并注意修改<bean>的子标记设置。


<beanid="自定义内容"class="对应类的全限定名">

<property name="类的属性的名字"ref="该属性在本文件中的id值"/>

</bean>


f)改写测试类代码,在不显示实例化service实现类的情况下,看看能否成功调用service的calculate()方法。


站长地图