在哪里存储spring mvc 3.x的配置信息

时间:2013-07-03 00:47:33

标签: spring spring-mvc

在spring mvc 3.x中存储自定义配置信息的好地方在哪里?如何通过任何控制器全局访问该信息?

是否有内置的配置管理器?

2 个答案:

答案 0 :(得分:2)

我认为'自定义配置'是指代码读取/您/您的运营团队可以更新的配置文件?

一个简单的解决方案是使用spring beans xml配置文件并以爆炸方式部署你的战争。

创建配置java类:

// File: MyConfig.java ------------------------------------
public class MyConfig {
  private String supportEmail;
  private String websiteName;
  // getters & setters..
}

将类配置为Spring bean并在spring beans xml文件上设置其属性(也可以创建新文件并使用<import resource="..."/>):

// File: root-context.xml ----------------------------------------
<beans ...>
  ...
  <bean class="com.mycompany.MyConfig">
    <property name="supportEmail" value="support@mycompany.com"/>
    <property name="websiteName" value="Hello Site"/>
  </bean>
  ...
</beans>

注入配置类(例如:在控制器中)

// File: HelloController.java ------------------------------------
@Controller
@RequestMapping("/hello")
public class HelloController {
  @Autowired MyConfig config;
  // ...
}

但是,配置更新需要重新部署/重新启动服务器

答案 1 :(得分:2)

您也可以使用<context:property-placeholder>

看起来像这样。

myapp.properties:

foo=bar

spring beans xml:

<context:property-placeholder location="classpath:myapp.properties"/>

或者

<context:property-placeholder location="file:///path/to/myapp.properties"/>

控制器:

import org.springframework.beans.factory.annotation.Value;
...

@Controller
public class Controller {

  @Value("${foo}")
  private String foo;

如果您想以编程方式获取媒体资源,可以将Environment@PropertySource一起使用。

配置:

@Configuration
@PropertySource("classpath:myapp.properties")
public class AppConfig {

  @Bean
  public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
    return new PropertySourcesPlaceholderConfigurer();
  }

控制器:

@Controller
public class Controller {

  @Value("${foo}")
  private String foo;

  @Autowired
  private Environment env;

  @RequestMapping(value = "dosomething")
  public String doSomething() {
    env.getProperty("foo");
    ...
  }

希望这有帮助。