2013-11-01 85 views
0

我需要设置与管理界面相关的一些属性。 这是我如何初始化@PropertySource如何设置由@PropertySource初始化的属性

@Configuration 
@PropertySource("classpath:application.properties") 
public class MainConfig 

现在,在我的管理控制器我需要从application.properties设置一些属性:

public @Controller @RequestMapping("admin") class AdminController { 
    private @Autowired Environment env; 

    public @RequestMapping(value = "settings.html", method = RequestMethod.POST) String processSettings(@Valid SettingsForm settingsForm, BindingResult result, Model model) { 
     if (result.hasErrors()) { 
      return settings(model); 
     } 

     // env.setProperty("foo.bar", settingsForm.getFooBar()); 
     return "redirect:settings.html"; 
    } 
} 

但是没有setProperty方法org.springframework.core.env.Environment。 我需要做些什么来设置这些属性?我是否需要创建另一个@Bean@Bean应该如何(再次提及application.properties)?

回答

1

Environment实现类以某种指定顺序注册​​的实例。当需要从Environment解决某个属性时,它会按顺序遍历这些​​并使用它找到的第一个属性值。

短让所有的​​对象,通过这些迭代,找到对应的application.properties文件(或其他方式)的一个,得到它的名字,以及与改变的值的新PropertySource对象替换它,也没有办法去做这个。

还要注意,Spring会为.properties文件创建一个PropertiesPropertySource对象,并且它不提供更改属性值的方法。

+0

然后我需要在我的后端和我的前端使用另一种方式在我的后端和'环境'。 – dtrunk