科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Spring MVC框架的高级配置(3)

Spring MVC框架的高级配置(3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文提供关于Spring MVC框架的配置技巧,以帮助管理基于Spring的web应用程序的多个实例。主要讨论两种配置问题:1、同步的Bean属性问题及其解决方案;2、同步Bean连接问题。

作者:Dejan Bosanac 来源:BEA  2007年9月3日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

正如您所看到的,除了web.xml文件中常有的ContextLoaderListener之外,我们还添加了contextConfigLocation上下文参数配置。这一参数用于指示框架查找这些配置文件的位置。如果这一参数被省略,则Spring就只能到applicationContext.xml中查找。这里我们也定义了特定于主机的配置文件来使用。

利用这种方法,我们将所有特定于主机的配置从applicationContext.xml文件中移除,这样便减轻了其在不同应用程序部署中的同步性。

如果这种方法成为您的新习惯,您还可以使其更加灵活。通过遵守下列指令,也可以将特定于主机的配置从web.xml文件中移除。

为此,需要创建特定于我们的应用程序上下文的类:

package net.nighttale.spring.util;

import java.net.InetAddress;

import org.springframework.web.context.support.XmlWebApplicationContext;

public class PerHostXmlWebApplicationContext 

extends XmlWebApplicationContext {



protected String[] getDefaultConfigLocations() {

String hostname = "localhost";

try {

hostname = InetAddress.getLocalHost().getHostName();

} catch (Exception e) {

}



String perHostConfiguration = DEFAULT_CONFIG_LOCATION_PREFIX 

+ "applicationContext-" 

+ hostname 

+ DEFAULT_CONFIG_LOCATION_SUFFIX

logger.debug(

"Adding per host configuration file: " 

+ perHostConfiguration

);



if (getNamespace() != null) {

return new String[] {

DEFAULT_CONFIG_LOCATION_PREFIX 

+ getNamespace() 

+ DEFAULT_CONFIG_LOCATION_SUFFIX

, perHostConfiguration};

}

else {

return new String[] {

DEFAULT_CONFIG_LOCATION

, perHostConfiguration};

}

}

}

这个类拓展了Spring中常被作为默认值使用的XmlWebApplicationContext。XmlWebApplicationContext类将Web应用程序的配置从XML定义文件中复制过来。默认情况下,它可以配置来自applicationContext.xml和[servlet-name]-servlet.xml文件中的应用程序。这个类执行的惟一一项额外任务便是获取它所在的主机名称,并将applicationContext-[hostname].xml文件添加到配置文件列表中。

为了使用这个类,我们需要对其进行编译,将其包含在类途径中,并指示Spring框架使用它。前两步非常简单,我们就不在此赘述。我们可以指示Sping通过contextClass上下文参数来使用它。除了web.xml文件中的原有配置,我们还可以添加下列内容:

<context-param>

<param-name>contextClass</param-name>

<param-value>

net.nighttale.spring.util.PerHostXmlWebApplicationContext

</param-value>

</context-param>

如果我们使用这一配置片断,将会有三个文件被用于初始化这个框架:[servlet-name]-servlet.xml、applicationContext-[hostname].xml以及applicationContext.xml。

正如您所看到的,applicationContext.xml和web.xml文件已经完全摆脱了任何特定的配置细节,而且您也不必担心会在更新应用程序时破坏配置。

但是,这种方法有一个不足之处。因为,不论是否会使用,都需要在应用程序部署中有第三个配置文件。在这种情况下,便不需要特定于主机的配置。例如:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 

"http://www.springframework.org/dtd/spring-beans.dtd">

<beans></beans>

最后,需要知道应用程序上下文类需要查找的特定主机名。检查主机名称的最简单的方法是在机器上运行下列代码:

System.out.println(InetAddress.getLocalHost().getHostName())

可以将其作为Java代码执行,也可在喜欢使用的脚本语言(如BeanShell或Groovy)中作为一个具有Java风格语法的脚本执行。在获取了主机的名称之后,应该创建一个默认的/WEB-INF/applicationContext-[hostname].xml空文件夹(如我们上面所定义的),然后便可以开始了。

结束语

在本文中,我们提供了一系列的配置技巧,让您在使用Spring MVC框架完成日常工作的时候更加轻松。如果您希望知道如何维护各种Web应用程序部署,可以试着找出最适合您的开发过程的解决方案。您的生活会更为轻松。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章