标签:style io ar 使用 java sp 文件 on 问题
Spring技术
(一)Spring技术介绍
1) Spring的优点
2) Spring将改变JavaEE
(二)下载并安装Spring
1) 获取Spring的压缩包
v Spring-framework-3.1.0.RELEASE-with-docs.zip
v Spring-framework-3.1.0.RELEASE.zip
2) 压缩文件下的目录结构
(三)依赖注入
前言:
Spring能有效的组织JavaEE应用各层的对象。无论是控制层的Action对象,还是业务层的Service对象,还是持久层的Dao对象,都可在Spring的管理下有机的调用并行。Spring将各层的对象以松耦合的方式组织在一起,Action对象无需关心Service的具体实现,Service对象无须关心持久层对象的具体实现,各层对象的调用完全面向接口。当系统需要进行重构的时候,代码的改写量将大大减少。
1) 依赖注入基础
v 依赖注入DI和控制反转Ioc是同一个概念,具体含义是,当某一个角色需要另外一位角色的协助的时候,在传统的程序设计过程中,通常有调用者来创建被调用者的实例。
v 但是在Spring中创建被调用者的工作不再由调用者来完成,通过Spring容器来完成,这就是控制反转Ioc。
v 创建被调用者的实例的工作由Spring容器来完成,然后注入调用者,因此也称依赖注入。
2) 设置注入
v 设置注入也称为Set注入(Setter Injection),是指在接受注入的类中定义一个set方法,并在参数中定义需要注入的元素。
public interface Person{
//定义一个使用斧子的方法
public void useAxe();
}
public interface Axe{
//Axe接口有一个坎的动作
public void chop();
}
public class Zhang implements Person{
private Axe axe ;
public void setAxe(Axe axe){this.axe = axe;}
public void useAxe(){
System.out.println(axe.chop());
}
}
public class StoneAxe implements Axe{
public String chop(){return "斧坎好慢!";}
}
<bean id="chinese" class="org.mmm.app.service.impl.Zhang">
<property name="axe" ref="stoneAxe">
</bean>
<bean id="stoneAxe" class="org.mmm.app.service.impl.StoneAxe">
</bean>
案例总结:
通过上面的案例,我们可以看到,使用Spring的Ioc and DI可以做到真正的面向接口编程。
在使用Ioc需要注意的三个基本要点:
ü 应用程序的各个组件面向接口编程,面向接口编程可以使得各个组件这间的耦合度提升到接口层次,从而有利于项目后期的扩展。
ü 应用程序的各组件不再由程序主动生成,而由Spring容器负责产生,并初始化。
ü Spring采用配置文件,Annotation来管理Bean的实现类,依赖关系,Spring则根据配置文件,利用反射来创建实例,并为之注入依赖关系。
3) 构造注入
构造注入是指通过构造函数来完成依赖关系的设定,而不是通过setter方法 。
public class Zhang implements Person
{
private Axe axe;
public Zhang(){}
public Zhang(Axe axe){this.axe = axe;}
public void useAxe(){
System.out.println(axe.chop());
}
}
<bean id="chinese" class="org.mmm.app.service.impl.Zhang">
<constructor-arg ref="steelAxe">
</bean>
<bean id="stoneAxe" class="org.mmm.app.service.impl.StoneAxe"></bean>
<bean id="steelAxe" class="org.mmm.app.service.impl.SteelAxe"></bean>
构造注入则在创建Bean实例时,已经完成了依赖关系的设置。
(四)Spring容器
1) 相关类的介绍
Spring容器的最为基本的额接口是BeanFactory,功能是配置,创建,管理Bean。它有一个子接口,ApplicationContext,因此称为Spring的上下文。
重点放在ApplicationContext。
ApplicationContext有两个实现类
ApplicationContext appContext = new FileSystemXmlApplicationContext(
new String[]{“bean.xml”,”service.xml”}
);
ApplicationContext appContext = new ClassPathXmlApplicationContext(
new String[]{“bean.xml”,”service.xml”}
);
2) Spring Ioc容器
问题:
① 什么是Ioc容器?
我们经常接触的BeanFactory和ApplicationContext都可以看成是容器的具体表现形式。
② 它在Spring中到底长什么样?
如果深入到Spring的实现去看,会发现Ioc容器实际上代表着一系列功能各异的容器产品。只是容器的功能有大有小,有各自的特点。
③ 他需要满足的基本特性是什么?
他需要满足BeanFactory这个接口的基本定义
3) BeanFactory对Ioc容器的功能定义
Ioc容器的基本接口是由BeanFactory来定义的,也就是说BeanFactory定义了Ioc容器的最基本的形式。
BeanFactory是怎样定义Ioc容器的基本接口
4) XmlBeanFactory的工作原理
ClassPathResource res = new ClassPathResource(“beans.xml”);
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
XmlBeanDefinitationReader reader = new XmlBeanDefinitationReader(factory);
reader.loadBeanDefinitions(res);
在使用Ioc容器的时候,要遵循如下4个步骤
1,创建Ioc配置文件的抽象资源,这个抽象资源包括BeanFinition的定义信息
2,创建一个BeanFactory,这里使用DefaultListableBeanFactory
3,创建一个载入BeanDefinition的读取器,这里使用XmlBeanDefinitionReader来载入XML文件形式的BeanDefinition,通过一个回调配置给BeanFactory。
4,从定义好的资源位置读入配置信息,具体的解析过程是由XmlBeanDefinitionReader来完成,完成整个载入和注册bean定以后,需要的Ioc容器就建立起来了,这时候就可以使用Ioc容器了。
标签:style io ar 使用 java sp 文件 on 问题
原文地址:http://www.cnblogs.com/water3/p/4035098.html