当前位置: 首页 > 知识库问答 >
问题:

如何在Spring MVC4中设置全局配置/变量?

印振国
2023-03-14
<context-param>
    <param-name>configA</param-name>
    <param-value>valueA</param-value>
</context-param>
<context-param>
    <param-name>configB</param-name>
    <param-value>valueB</param-value>
</context-param>

但是我想存储一些复杂的对象,像这样

HashMap myConfig = new HashMap();

String[] cfgB={"b1", "b2"};

HashMap<String, String> cfgC=new HashMap<String, String>();
cfgC.put("C1", "1");
cfgC.put("C2", "2");

MyConfigD cfgD = new MyConfigD();

myConfig.put("configA", "A");
myConfig.put("configB",cfgB);
myConfig.put("configC",cfgC);
myConfig.put("configD",cfgD);

context-param不可能做到这一点,我还能在Java或Spring中使用什么?

共有1个答案

戚良弼
2023-03-14

如果您不受限制,并且可以灵活地决定如何设置属性,则有两个选项。

首先是在@configuration类中用Java代码定义bean。对于大多数对象,可以使用@Autowired的bean。所有bean只在运行时加载。对于地图(以及列表等),您将它们定义为bean,然后使用@resource注释访问它们。请注意,您不能使用@autowired访问地图,Spring对这些类型使用@resource。

与对另一个答案的评论相反,我认为设置也可以在代码中定义,仅仅因为它是用XML编写的并没有什么不同,它们被认为是等价的。通过用Java编写配置和设置,您可以获得OOP的强大功能,当您有复杂的配置时,这是非常棒的。

@Bean
public MyConfig myConfig() {
    final MyConfig myConfig = new MyConfig();
    myConfig.put("configA", "A");
    ...
    return myConfig;
}

@Bean
public Map<String, String> myMap() {
    final Map<String, String> myMap = new HashMap<>();
    myMap.put("A", "a");
    return myMap;
}
@Autowired
private MyConfig myConfig;

@Resource(name = "myMap")
private Map<String, String> myMap;
myConfig.configA:A
myConfig.configB:B
myConfig.coll.cA:['a','b','c']
myConfig.coll.cB:{a:A,b:B,c:C}
...
@Value("${myConfig.configA}")
private String configA;
 类似资料:
  • 问题内容: 我正在一个项目上,我想让我的索引在滚动时加载更多内容。我想设置一个全局变量来保存页面已加载多少次。我的项目结构如下: 首先,我在中声明全局变量: 皮查姆(Pycharm)警告 在: 还有 我也引用了global-variable-and-python-flask 但我没有main()函数。在Flask中设置全局变量的正确方法是什么? 问题答案: 你没有在定义,只是在声明,所以就好像在说

  • 目标服务器正在使用自签名证书。是否有方法禁用认证检查?在另一个web服务器实例中,我们使用 在使用詹金斯时,是否可以有类似的选择?

  • 本文向大家介绍如何在函数中设置一个全局变量相关面试题,主要包含被问及如何在函数中设置一个全局变量时的应答技巧和注意事项,需要的朋友参考一下 python中的global语句是被用来声明全局变量的。

  • This is a list of variables that are always implicitly assigned to the . This is handy for making global variables or server variables available to all templates without having to manually assign them

  • 我使用的是swing,有一个函数(CreateAndShowGUI())可以监听上、左、右键的按下 现在,当我运行程序并按下任意键(向上、向左、向右、向下)时,我可以看到按下的键变量被设置为True。但当我试图在main中访问相同的内容时,按下的这个键的值为false。谁能帮我找出我错的地方吗?

  • 如何设置可从生成访问的全局变量。格雷德尔和任务?