2013-11-01 86 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