1 描述Spring框架的作用和优点。

参考答案

Spring框架的作用和优点如下:

1. Spring是一个开源的轻量级的应用开发框架,其目的是用于简化企业级应用程序开发,减少侵入;

2. Spring提供的IoC和AOP应用,可以将组件的耦合度降至最低,即解耦,便于系统日后的维护和升级;

3. Spring为系统提供了一个整体的解决方案,开发者可以利用它本身提供的功能外,也可以与第三方框架和技术整合应用,可以自由选择采用哪种技术进行开发。

2 如何控制Bean对象的作用域,默认作用域是什么?

参考答案

1. 可以通过<bean>定义的scope属性指定Bean对象的作用域或者使用注解@Scope指定Bean对象的作用域。

2. 默认Bean对象的作用域为singleton。

3 基于Setter注入实现DeptDAO和DeptService的IoC控制,并编写测试程序。

参考答案

步骤一:新建工程,导入jar包

新建名为SpringIoC_01_exec的web工程,在该工程导入如图-1所示的5个jar包。

图– 1

步骤二:新建DeptDAO,创建对部门的增删改操作的接口

代码如下所示:

packageorg.tarena.dao;

public interface DeptDAO {
	public void add();
	public void delete();
	public void update();
}

步骤三:新建该类JdbcDeptDAO,模拟JDBC实现DeptDAO接口

代码如下所示:

packageorg.tarena.dao;

public class JdbcDeptDAO implements DeptDAO{

	public void add() {
		System.out.println("利用JDBC技术保存Dept信息");
	}

	public void delete() {
		System.out.println("利用JDBC技术删除Dept信息");
	}

	public void update() {
		System.out.println("利用JDBC技术更新Dept信息");
	}
}

步骤四:新建DeptService类

新建DeptService类,在该类中调用DeptDAO的add方法、update方法以及delete方法,并添加setDao方法,为DeptDAO的引用dao赋值,代码如下所示:

packageorg.tarena.service;

importorg.tarena.dao.DeptDAO;

public class DeptService {

	privateDeptDAOdao;

	public void setDao(DeptDAOdao) {
		this.dao = dao;
	}

	public void addDept() {
		System.out.println("添加部门操作处理");
		dao.add();
	}

	public void deleteDept() {
		System.out.println("删除部门操作处理");
		dao.delete();
	}
	public void updateDept() {
		System.out.println("修改部门操作处理");
		dao.update();
	}
}

步骤五:新建applicationContext.xml

该文件的核心代码如图-2所示。

图– 2

步骤六:新建类Test

新建类Test中,调用DeptService的addDept方法、updateDept方法以及deleteDept方法,进而调用DeptDAO的add方法、update方法以及delete方法,代码如图-3所示。

图– 3

步骤七:运行Test类

运行Test类,控制台的输出结果如图-4所示。

图 - 4

从输出结果可以看出调用到了DeptDAO接口中的add方法、update方法以及delete方法,使用setter注入的方式将DeptDAO给DeptService注入成功。

DeptDAO接口的完整代码如下所示:

packageorg.tarena.dao;

public interface DeptDAO {
	public void add();
	public void delete();
	public void update();
}

JdbcDeptDAO类的完整代码如下所示:

packageorg.tarena.dao;

public class JdbcDeptDAO implements DeptDAO{

	public void add() {
		System.out.println("利用JDBC技术保存Dept信息");
	}

	public void delete() {
		System.out.println("利用JDBC技术删除Dept信息");
	}

	public void update() {
		System.out.println("利用JDBC技术更新Dept信息");
	}
}

DeptService类的完整代码如下所示:

packageorg.tarena.service;

importorg.tarena.dao.DeptDAO;

public class DeptService {

	privateDeptDAOdao;

	public void setDao(DeptDAOdao) {
		this.dao = dao;
	}

	public void addDept() {
		System.out.println("添加部门操作处理");
		dao.add();
	}

	public void deleteDept() {
		System.out.println("删除部门操作处理");
		dao.delete();
	}
	public void updateDept() {
		System.out.println("修改部门操作处理");
		dao.update();
	}
}

Test类的完整代码如下所示:

packageorg.tarena.test;

importorg.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
importorg.tarena.service.DeptService;

public class Test {
	public static void main(String[] args) throws Exception {
		String conf = "applicationContext.xml";
		ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
		DeptService service = ac.getBean("deptService", DeptService.class);
		service.addDept();
		service.updateDept();
		service.deleteDept();
	}
}

applicationContext.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"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc"  
	xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:jpa="http://www.springframework.org/schema/data/jpa"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
		http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
		http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
		http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd">
	
	<bean id="jdbcDeptDao" class="org.tarena.dao.JdbcDeptDAO">
	</bean>
	
	<!-- setter注入 -->
	
	<bean id="deptService" class="org.tarena.service.DeptService">
		<property name="dao" ref="jdbcDeptDao">
		</property>
	</bean>
	
</beans>