Spring 环境配置:
简单来说就是 :四个jar包 + 一个依赖包 + ApplicationContext.xml
jar 包都在spring源码里面,位置看一下图
四个jar包在spring源码下的路径为:spring-framework-3.2.0.RELEASE-dist.zip\spring-framework-3.2.0.RELEASE\libs\
另一个依赖包的在spring源码路径在:spring-framework-3.0.2.RELEASE-dependencies.zip\org.apache.commons\com.springsource.org.apache.commons.logging\1.1.1\
然后在Myeclipse下创建一个JavaWEB 项目
第一步导包
创建一个ApplicationContext.xml的文件,文件名随意都行,存放路径同样可以随意,只要能找到就是,但一般都放在对应的bean的目录下或者在src目录下
内容在下面练习中给出
现在来实现一个简单的控制反转的案例
控制反转:意思就是把创建对象的控制权交由Spring管理,不再由对象自己创建,简单说就是在代码中不使用new 来创建对象,而是从Sping容器中获取
先写一个service类
public class UserService {
private BookDao bookDao ;
public void addUser()
{
System.out.println("添加用户");
}
public void addBook() {
bookDao.saveBook();
}
然后在Application中配置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.xsd">
<!-- 配置service
<bean> 配置需要创建的对象
id :用于之后从spring容器获得实例时使用的
class :需要创建实例的全限定类名
-->
<!-- 在这里配置需要实例的对象-->
<bean id="userServiceId" class="com.slxy.service.UserService"></bean>
</beans>
在没有使用spring之前我们要使用这个类时候是这样的
// 创建一个对象
UserService us = new UserServiceImol();
// 调用对象的方法
us.addUser();
现在是这样使用
// 现获得上下文对象 ,传入的path路径就是你的ApplicationContext.xml的路径
ApplicationContext context = new ClassPathXmlApplicationContext("IoCApplicationContext.xml");
// 通过上下文对象的getBean方法获得实例
UserService us= context.getBean("userServiceId",UserService.class);
// 调用实例方法
us.addUser();
这样就实现了控制的反转
接下来实现依赖注入
依赖注入:就是一个类中含有另一个类的对象的引用
例如
UserService类必须实现dao类setter方法
public class UserService {
private BookDao bookDao ;
/**
* 设置setter方法,实现依赖注入
* @param bookDao
*/
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
如何通过ApplicationContext配置文件实现这个依赖呢
使用方法和上面控制反转一致,现在可以看到使用了Spring框架以后,一般不用new 关键字来创建对象,都是有spring来创建对象,