文档视界 最新最全的文档下载
当前位置:文档视界 › spring配置详解

spring配置详解

Spring有四种Bean封装机制:Bean Wrapper机制、Bean Factory机制、ApplicationContext机制、Web Context机制等,它们所对应配置文件的内容也是不同的。下面,我们就以基于Bean Factory机制实现的Spring的三种依赖注入模式为例,介绍一下Spring配置文件的基本内容。
1、接口注入,示例代码如下:
public interface InterfaceB{
public Object doIt();
}public class ClassC implements InterfaceB{
String str1;
public ClassC(String str1){
This. str1= str1;
}
public Object doIt(){
return "Hello,"+ strl+"!";
}
}public class ClassA {
private InterfaceB clzB;
public Object doSomething(InterfaceB b) {
clzB = b;
return clzB.doIt();
}
………
}
该情况下的Spring配置文件:bean.xml的内容大致如下:

Interface Injection Sample

class="net.liyb.spring.qs.ClassC"> 字串5

liyb


class="net.liyb.spring.qs.ClassA">





2、设值注入,示例代码如下:
public class DIByConstructor {
private final DataSource dataSource;
private final String message;
……… 字串2
public setDataSource(DataSource ds) {
this.dataSource = ds;
}
public setmessage(String msg) {
this.message = msg;
}
public getDataSource() {
return this.dataSource;
}
public getmessage() {
return this.message;
}
………
}
该情况下的Spring配置文件:bean.xml的内容大致如下:

Values Injection Sample

class="org.springframework.jndi.JndiObjectFactoryBean">

java:comp/env/jdbc/sample

字串8
class="net.liyb.spring.qs.DIByConstructor">

HeLLo


class="net.liyb.spring.qs.DIByConstructor">



字串7
3、构造子注入,示例代码见日志:"Spring核心技术学习总结"中的1.2.3节。此时对应的配置文件同"2、设值注入"中的配置文件是一样的,所以具体内容在此省略。










从配置文件说起
在WEB-INF/config下有多种配置文件,这里作个介绍,对项目的开发很有意义
主要涉及到了struts(struts-config文件夹下) 、spring(app-config文件夹下) 、struts和spring的结合处理(action-servlets-config文件夹下) 、
模版技术(tiles-config文件夹下) 、验证技术(validation-config文件夹下)

到这里,或许会留意到没有提及hibernate,有关hibernate的设置,也是通过spring来配置的,在后面的spring文件中会看到,有关hibernate.cfg.xml则存放在classpath下,需要用到的hibernate属性配置信息hibernate.properties也存放在classpath下

这些配置信息是整个系统的装配总线,通过这些xml的配置,把所有的资源串在了一起。

这里还要强调一个信息,这些配置文件都是按照功能模块来划分的,比如现在讲解的这个系统中,除了默认的default外,还划分了order(订单处理系统)、admin(后台管理系统),这样设置的优势在于很好的扩展系统,降低耦合性,同时条理也比较清晰,便于管理。

下面分别介绍一下各个主要的配置文件内容
1、struts(struts-config文件夹下)
struts-config文件夹下主要有struts-config-default.xml、struts-config-admin.xml、struts-config-order.xml三个配置文件
这里放置的是有关struts的配置信息,比如form-bean、action,有关form-bean的配置和一般的struts程序没有什么两样,这里需要说明的是action的配置
这里举例一个配置片断:
type="org.springframework.web.struts.DelegatingActionProxy"
scope="request" validate="true" input="/WEB-INF/jsp/login.jsp">



注意里面的type属性,这里设置的是org.springframework.web.struts.DelegatingActionProxy,正是通过它来使得和spring很好的结合起来,这里你会发现没有具体的action类,它是通过struts和spring的结合处理(action-servlets-config文件夹下)的配置文件来实现的,这样action类也纳入到了spring

容器的管理体系中去了。

struts和spring的结合就是这样来实现的,当然除了这种方式以外还有其他的,可以参考:关于struts中validate的几种情况
除了以上的配置信息外,还有几个重要的配置,它是结合Spring、Tiles、Validator等框架的润滑剂,主要是通过Struts的plug-in技术来实现的,举例如下:
className="org.springframework.web.struts.ContextLoaderPlugIn">
value="/WEB-INF/config/action-servlets-config/action-servlets-default.xml
/WEB-INF/config/action-servlets-config/action-servlets-order.xml
/WEB-INF/config/action-servlets-config/action-servlets-admin.xml" />

通过Spring框架的ContextLoaderPlugIn,把action类交由Spring容器来管理
这里需要说明的一点是:是否需要在struts-config-default.xml文件中一起加载所有的action-servlets信息,还是对应着分别加载。当然现在的系统中是一起加载的,不过如果分开加载,也可以很好的分模块开发,这边只是探讨,作个说明而已。


value="/WEB-INF/config/tiles-config/tiles-defs-default.xml" />


实现Tiles技术的嫁接


value="/WEB-INF/config/validation-config/validator-rules-default.xml,
/WEB-INF/config/validation-config/validation-default.xml" />

在Struts框架中采用Validator框架的验证机制

2、spring(app-config文件夹下)
app-config文件夹下主要有applicationContext_default.xml、applicationContext_admin.xml、applicationContext_order.xml、applicationContext.xml、dataAccessContext-local.xml
这里主要是设置系统所需要的业务逻辑bean,完成符合spring-beans.dtd的定义规则

分别解释一下各个配置文件的主要用途:

applicationContext.xml--定义一些共通的bean,列举如下:
AbstractFacadeBean(com.iplan.portal.framework.base.BaseFacade--所有Facade的抽象类,主要完成对DAO的配置,以便为所有FACADE提供DAO支持)

AbstractServiceBean(com.iplan.portal.framework.base.BaseService--所有ServiceImp的抽象类,主要完成对DAO的配置,以便为所有ServiceImp提供DAO支持)

AppRelationCore(com.iplan.portal.framework.base.AppRelationCore--系统各模块间关系的维护类,既所有模块暴露的Facade通过此类来访问,每添加一个Facade模块,需要在这里追加)

baseTransactionProxy(通用的事务代理,这样所有的Service、Facade都可以继承这个事务代理)
这里定义的都是些基础设施,可以看到都是framework.base下的类

dataAccessContext-local.xml--定义本地数据源信息

明:为了系统运作的简单化,这里设置了本地数据源信息(以local为标志),当然如果为了分布式运作,采用jta事务,可以定义相应的设置
这里主要定义了数据源dataSource、hibernate的SessionFactory(mySessionFactory)、hibernate的事务管理器(myTransactionManager)、共通的访问数据库接口commonDAO(https://www.docsj.com/doc/1610657339.html,monDAO)

以上两个都是系统运作的基础,其间有一些联系,大家可以参照一下具体的配置文件即可

其它的三个配置文件都是按照功能模块来划分的,都是具体业务方面的信息,这里不在详细描述,可以自行参考配置文件

3、struts和spring的结合处理(action-servlets-config文件夹下)
action-servlets-config文件夹下主要有action-servlets-default.xml、action-servlets-admin.xml、action-servlets-order.xml
这里是action在spring容器下的配置,举例如下:
class="com.iplan.portal.start.action.LoginAction">




这里的name属性"/loginAction"和相应的struts配置文件中的path属性要一一对应起来,这样action类的生命周期将交由spring容器来管理了

4、模版技术(tiles-config文件夹下)
5、验证技术(validation-config文件夹下)
这两项就不在多做阐述了,应该应用的比较多了

除了WEB-INF/config下的五大类配置文件外,对其他一些需要用到的配置信息作一个比较简单的介绍
hibernate.cfg.xml:
设置pojo信息,相关的SessionFactory配置已经移植到了Spring的dataAccessContext-local.xml配置文件中去了

hibernate.properties
设置一些有关hibernate的属性信息,比如:driver、url、username、password、dialect、Connection Pool等等

ApplicationResources.properties
i18n国际化资源信息

displaytag.properties
display标签的配置信息

default-db.script、default-db.properties默认的hsqldb的数据结构、数据

log4j.properties日志配置文件

最后,还有一个非常重要的配置信息:web.xml
有关于各种信息的配置,web.xml里面有比较详细的说明,这里就不在多阐述了

这里描述一下应用服务器启动后,如何加载这些配置信息已供应用系统运作的
第一步,当然是读取web.xml中的配置信息,可以启动
Log4j信息
通过ContextLoaderListener、读取contextConfigLocation信息(spring(app-config文件夹下)),加载springapp-config文件夹下的配置信息
HSQLDB数据库
启动struts的ActionServlet,相应的config被加载
第二步,从第一步可以看到struts(struts-config文件夹下)、spring(app-config文件夹下)都已经被加载
那么struts和spring的结合处理(action-servlets-config文件夹下)、模版技术(tiles-con

fig文件夹下)、验证技术(validation-config文件夹下)如何被加载呢?
struts和spring的结合处理(action-servlets-config文件夹下)通过struts(struts-config文件夹下)下的struts-config-default.xml加载
模版技术(tiles-config文件夹下)、验证技术(validation-config文件夹下)分别通过struts(struts-config文件夹下)下的各个对应的功能模块配置文件加载
通过以上两步加载,把五个大的配置信息都加载到系统中去了

以上是关系系统配置文件的一些说明,希望通过这些能对整个系统的架构有一个比较清晰的了解

相关文档