简介
这是Spring柜架基础总结的详细页面
介绍了和javascript
JavaScript Spring柜架基础总结有关的知识
技巧
经验
和一些javascript源码等
定义
Spring是一个开源的控制反转(IOC)和面向反切(AOP)的容器框架主要用于简化企业开发可以适用于任何java应用程序使用框架的主要优势在于其分层架构分层架构允许选择使用哪一个组件同时为 JEE 应用程序开发提供集成的框架
优点
降低组件之间的耦合度实现软件各层之间的解耦
可以使用容器提供众多的服务(事务管理服务消息服务)
容器提供单例模式支持开发人员不再需要自己编写实现代码
容器提供了AOP技术利用它很容易实现如权限拦截运行期监控等功能
容器提供众多辅作类使用这些类能够加快应用的开发
Spring对于主流的应用框架提供了集成支持便于应用开发
模块组成
核心容器提供Spring框架的基本功能BeanFactory是其主要组件它是工厂模式的实现BeanFactory使用控制反转模式将应用程序的配置和依赖性规范与实
际的应用程序代码分开
Spring上下文是一个配置文件向Spring框架提供上下文信息
Spring AOP:直接将面向方面的编程功能集成到Spring框架中为基于Spring的应用程序中的对象提供了事务管理服务
Spring DAO提供了异常层次结构可用该结构来管理异常处理和不同数据库供应商给定的错误信息简化了错误处理且大大降低了需要编写的异常代码数量
Spring ORM提供ORM的对象关系工具遵从Spring的通用事务和DAO异常层次结构
Spring Web建立在应用程序上下文模块之上为基于Web的应用程序提供了上下文简化了处理多部分请求以及将请求参数绑定到域对象的工作
Spring MVC是一个全功能的构建Web应用程序的MVC实现Spring模块构建在核心容器之上核心容器定义了创建配置和管理bean的方式每个模块都可以单独存在也可以与其他模块联合实现
不经意找到一个很不错的例子来说明Spring框架的作用
首先写下两个Bean类
ExampleBean类
public class ExampleBean {
private String psnName=null;
private RefBean refbean=null;
private String addinfo=null;
public RefBean getRefbean() {
return refbean;
}
public String getAddinfo() {
return getRefbean()getAddress()+getRefbean()getZipcode();
}
public String getPsnName() {
return psnName;
}
public void setPsnName(String psnName) {
thispsnName = psnName;
}
public void setRefbean(RefBean refbean) {
thisrefbean = refbean;
}
public void setAddinfo(String addinfo) {
thisaddinfo = addinfo;
}
}
RefBean类
public class RefBean {
private String zipcode=null;
private String address=null;
public String getAddress() {
return address;
}
public void setAddress(String address) {
thisaddress = address;
}
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipcode) {
thiszipcode = zipcode;
}
}
其xml配置文件 Beanxml:
<?xml version=″ encoding=UTF″?>
<!DOCTYPE beans PUBLIC //SPRING//DTD BEAN//EN
beansdtd>
<beans>
<bean id=exampleBean class=testExampleBean>
<property name=psnName><value>xkf</value></property>
<property name=refbean>
<ref bean=refBean/>
</property>
</bean>
<bean id=refBean class=testRefBean>
<property name=address><value>BeiJing</value></property>
<property name=zipcode><value></value></property>
</bean>
</beans>
测试类Test:
public class Test {
public static void main(String[] args){
try{
Resource input = new ClassPathResource(test/Beanxml);
Systemoutprintln(resource is:+input);
BeanFactory factory = new XmlBeanFactory(input);
ExampleBean eb =
(ExampleBean)factorygetBean(exampleBean);
Systemoutprintln(ebgetPsnName());
Systemoutprintln(ebgetAddinfo());
}
catch(Exception e){
eprintStackTrace();
}
}
这样通过BeanFactory的getBean方法以及xml配置文件避免了在test类中直接实例化ExampleBean消除了应用程序(Test)与服务(ExampleBean)之间的耦合实现了IOC(控制反转)或者说依赖的注射(Dependency Injection)