spring mvc 3.x でカスタム構成情報を保存するのに適した場所はどこですか? また、コントローラーを介してその情報にグローバルにアクセスするにはどうすればよいですか?
組み込みの構成マネージャーはありますか?
spring mvc 3.x でカスタム構成情報を保存するのに適した場所はどこですか? また、コントローラーを介してその情報にグローバルにアクセスするにはどうすればよいですか?
組み込みの構成マネージャーはありますか?
「カスタム構成」とは、コードが読み取る構成ファイルを意味すると思います/あなた/あなたの運用チームは更新できますか?
簡単な解決策の 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;
// ...
}
ただし、構成の更新には再デプロイ/サーバーの再起動が必要です
も使用できます<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");
...
}
お役に立てれば。