设置webapprootkey no-web.xml

时间:2013-07-11 08:30:28

标签: java spring-mvc

我正在将Web应用程序迁移到Spring 3.2,并且正在享受免费的web.xml配置。 剩下的一部分是设置webapp根密钥,我以前在web.xml中做过这样的事情:

<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webapproot</param-value>
</context-param>

我知道Spring会创建一个默认密钥,但在我的情况下,我正在运行同一个战争的多个版本,并且需要将密钥设置为每个的不同值。所以我最好从属性文件中获取一个值并将其用作rootkey。

我想我会在这里做到这一点:

public class WebAppInitializer implements WebApplicationInitializer {
    private static final Logger logger = Logger.getLogger(WebAppInitializer.class);

@Override
public void onStartup(ServletContext servletContext) throws ServletException {
    // Create the root appcontext
       AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
       rootContext.register(AppConfig.class);

       servletContext.addListener(new WebAppRootListener());

    // Manage the lifecycle of the root appcontext
       servletContext.addListener(new ContextLoaderListener(rootContext));
       //servletContext.setInitParameter("defaultHtmlEscape", "true");

    // The main Spring MVC servlet.
       ServletRegistration.Dynamic springapp = servletContext.addServlet(
          "springapp", new DispatcherServlet(rootContext));
            springapp.setLoadOnStartup(1);
       Set<String> mappingConflicts = springapp.addMapping("/");
...etc...

感谢任何可以提供建议的人!

1 个答案:

答案 0 :(得分:1)

第一部分很简单:

servletContext.setInitParameter("webAppRootKey", getRootKey());

并获取rootkey,在这种情况下,由maven构建添加到application.properties文件中,

private String getRootKey() {
    Properties prop = new Properties();
    ClassLoader loader = Thread.currentThread().getContextClassLoader();           
    InputStream stream = loader.getResourceAsStream("application.properties");
    String key=null;
    try {
        prop.load(stream);
        key = prop.getProperty("rootKey");
    } catch  (Exception e) {
        throw new RuntimeException("Cannot load webapprootkey", e);
    }
    return key;
}