实验目的:
1.掌握spring框架的搭建与配置
2.理解spring中的 IOC 和 DI 思想
3.掌握ApplicationContext容器的使用
4.掌握属性setter方法注入的实现
实验任务1:创建项目,引入JAR包
在idea中,创建一个名为spring01的项目,将spring的4个基础包以及commons-logging的JAR包导入,如图所示。
实验任务2:配置spring框架配置文件
在src目录下,创建spring的配置文件applicationContext.xml,并在配置文件中创建一个id为userDao的Bean。代码如下。
<?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-4.3.xsd">
<bean id="userDao" class="com.hxci.jianzhu.ioc.impl.UserDaoImpl"></bean>
<bean id="userService" class="com.hxci.jianzhu.ioc.impl.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
</beans>
实验任务3:创建UserDao接口
在scr目录下,创建一个com.hxci.ioc包,并在包中创建接口UserDao,然后在接口中定义一个say()方法。代码如下。
package com.hxci.jianzhu.ioc;
public interface UserDao {
public void say();
}
实验任务4:创建接口实现类UserDaoImpl
在com.hxci.ioc包下,创建UserDao接口的实现类UserDaoImpl,该类需要实现接口中的say()方法,并在方法中编写一条输出语句。代码如下。
package com.hxci.jianzhu.ioc.impl;
import com.hxci.jianzhu.ioc.UserDao;
public class UserDaoImpl implements UserDao {
@Override
public void say() {
System.out.println("userDao say hello World!");
}
}
实验任务5:创建IOC测试类
在com.hxci.ioc包下,创建测试类TestIoc,并在类中编写main()方法,初始化spring容器,加载配置文件,通过spring容器获取userDao实例,最后调用实例中say()方法,代码如下。
package com.hxci.jianzhu.ioc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestIoc {
public static void main(String[] args){
ApplicationContext applicationContext= new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
UserDao userDao = (UserDao)applicationContext.getBean("userDao");
userDao.say();
}
}
实验任务6:创建service接口
在com.hxci.ioc包下,创建UserService,在接口中写一个say()方法,代码如下。
package com.hxci.jianzhu.ioc;
public interface UserService {
public void say();
}
实验任务7:创建接口实现类UserServiceImpl
在com.hxci.ioc包下,创建UserService接口的实现类UserServiceImpl,在类声明userDao属性,并添加属性的setter方法。代码如下。
package com.hxci.jianzhu.ioc.impl;
import com.hxci.jianzhu.ioc.UserDao;
import com.hxci.jianzhu.ioc.UserService;
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao){
this.userDao = userDao;
}
@Override
public void say() {
this.userDao.say();
System.out.println("userService say hello World!");
}
}
实验任务8:更改spring配置文件
在配置文件中aoolicationContext.xml中,创建一个id为userService的Bean,
该Bean用于实例化UserServiceImpl类的信息,并将userDao的实力注入到userService中。代码如下。
<bean id="userService" class="com.hxci.jianzhu.ioc.impl.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
实验任务9:创建ID测试类
在com.hxci.ioc包中,创建测试类TestDI,进行测试。代码如下。
package com.hxci.jianzhu.ioc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestDI {
public static void main(String[] args){
ApplicationContext applicationContex= new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
UserService userService = (UserService)applicationContex.getBean("userService");
userService.say();
}
}