【问题标题】:Access web.xml context-param in POJO with Spring使用 Spring 访问 POJO 中的 web.xml 上下文参数
【发布时间】:2018-06-26 16:24:41
【问题描述】:

如何使用 Spring 访问 POJO 中的上下文参数?我想也许通过添加@Component 它将由Spring“管理”,然后我可以使用@Value 注释。 String minutes = null 而不是上下文中设置的 = 5。

@Component
 public class process {

       @Value("${minutes}")
       private static String minutes;
}

web.xml

<context-param>
    <param-name>minutes</param-name>
    <param-value>5</param-value>
</context-param>

【问题讨论】:

  • 您不能在static 字段上使用@Value
  • 谢谢,还有其他访问可配置参数的方法吗?
  • 为什么它必须是static 变量?

标签: java spring spring-mvc


【解决方案1】:

首先你必须创建一个新的“ServletContextListener”

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;

public class DataInitionlazationListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        try {
            ServletContext context = sce.getServletContext();
            Process.minutes = context.getInitParameter(startTime);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
    }
}

带有静态变量的 POJO 类:

public class Process {

   public static String minutes;

}

通过使用上面的类,它将初始化你的 POJO 静态变量:

【讨论】:

    【解决方案2】:

    检查给定的样本:

    @Component public class process { private String minutes; public String getMinutes(){ minutes= context.getInitParameter(startTime); return minutes; } @Autowired ServletContext context;

    【讨论】:

    • 该代码在我将其放入 Controller 类时有效,但在静态 POJO 中它似乎不起作用。
    • 要通过 Spring 加载/初始化属性,我们必须不使用静态对象。如果你想在你的静态对象中使用这个值,那么你必须在初始化应用程序时设置这个值。检查我的另一个答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2010-11-06
    • 2017-07-04
    相关资源
    最近更新 更多