Tau*_*ren 13 java timezone spring
我正在使用PropertyPlaceholderConfigurer从属性文件加载应用程序设置,例如JDBC连接信息.我还想将其他设置(如默认语言环境和时区)作为属性.
但我不确定最好的执行方法Locale.setDefault()和TimeZone.setDefault().我希望他们在启动时早点运行一次.在其他代码执行之前,Spring是否有正确的方法执行某些代码?有什么建议?
我知道我可以在命令行上指定默认值,但是这个应用程序将安装在很多地方,我想避免因忘记指定-Duser.timezone = UTC或其他原因而引起的问题.
kis*_*sna 11
我发现Spring在调用contextInitialized方法之前加载了一些默认bean,包括其他bean,所以,这是一个更好的方法"草案",我能想到,如果你发现任何问题,请告诉我:
public class SystemPropertyDefaultsInitializer
implements WebApplicationInitializer{
private static final Logger logger = Logger
.getLogger(SystemPropertyDefaultsInitializer.class);
@Override
public void onStartup(ServletContext servletContext)
throws ServletException {
logger.info("SystemPropertyWebApplicationInitializer onStartup called");
// can be set runtime before Spring instantiates any beans
// TimeZone.setDefault(TimeZone.getTimeZone("GMT+00:00"));
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
// cannot override encoding in Spring at runtime as some strings have already been read
// however, we can assert and ensure right values are loaded here
// verify system property is set
Assert.isTrue("UTF-8".equals(System.getProperty("file.encoding")));
// and actually verify it is being used
Charset charset = Charset.defaultCharset();
Assert.isTrue(charset.equals(Charset.forName("UTF-8")));
// locale
// set and verify language
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23601 次 |
| 最近记录: |