0

spring mvc 3.x でカスタム構成情報を保存するのに適した場所はどこですか? また、コントローラーを介してその情報にグローバルにアクセスするにはどうすればよいですか?

組み込みの構成マネージャーはありますか?

4

2 に答える 2

2

「カスタム構成」とは、コードが読み取る構成ファイルを意味すると思います/あなた/あなたの運用チームは更新できますか?

簡単な解決策の 1 つは、Spring Bean xml 構成ファイルを使用して、戦争を展開して展開することです。

構成 Java クラスを作成します。

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

クラスを Spring Bean として構成し、そのプロパティを Spring Bean 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;
  // ...
}

ただし、構成の更新には再デプロイ/サーバーの再起動が必要です

于 2013-07-03T01:10:09.970 に答える
2

も使用できます<context:property-placeholder>

このように見えます。

myapp.properties:

foo=bar

春豆 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プログラムでプロパティを取得する場合は、 withを使用できます@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");
    ...
  }

お役に立てれば。

于 2013-07-03T04:53:29.423 に答える