[SPRING] 스프링 설정으로 기본 지역 및 시간대 초기화
SPRING스프링 설정으로 기본 지역 및 시간대 초기화
PropertyPlaceholderConfigurer를 사용하여 속성 파일에서 JDBC 연결 정보와 같은 응용 프로그램 설정을로드하고 있습니다. 또한 기본 로케일 및 시간대와 같은 다른 설정을 속성으로 사용하고 싶습니다.
하지만 Locale.setDefault () 및 TimeZone.setDefault ()를 실행하는 가장 좋은 방법이 확실하지 않습니다. 나는 그들이 초기에 단지 한 번만 뛰길 바란다. 다른 코드가 실행되기 전에 먼저 Spring에서 적절한 코드가 실행되고 있습니까? 어떤 제안?
명령 줄에서 기본값을 지정할 수 있지만이 응용 프로그램은 여러 위치에 설치 될 것이고 누군가가 -Duser.timezone = UTC 등을 지정하지 않는 것을 막기 위해 문제를 피하고자합니다.
해결법
-
==============================
1.나는 ServletContextListener를 사용했다. contextInitialized (..)에서 TimeZone.setDefault (..)가 호출됩니다.
나는 ServletContextListener를 사용했다. contextInitialized (..)에서 TimeZone.setDefault (..)가 호출됩니다.
어떤 생성자 나 @PostConstruct / afterPropertiesSet ()에서 타임 존에 의존한다면 그것은 고려되지 않을 것입니다.
필요한 경우이 질문을 살펴보십시오.
-
==============================
2.나는 contextInitialized 메소드를 호출하기 전에 다른 bean을 포함하여 기본 bean을로드하는 것을 발견했다. 그래서 생각해 볼 수있는 더 나은 접근 방법 인 "draft"가있다.
나는 contextInitialized 메소드를 호출하기 전에 다른 bean을 포함하여 기본 bean을로드하는 것을 발견했다. 그래서 생각해 볼 수있는 더 나은 접근 방법 인 "draft"가있다.
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 } }
-
==============================
3.독립형 스프링 부트 응용 프로그램은 어떻습니까? Java 응용 프로그램은 다음과 같습니다.
독립형 스프링 부트 응용 프로그램은 어떻습니까? Java 응용 프로그램은 다음과 같습니다.
@SpringBootApplication @EnableScheduling @EnableConfigurationProperties(TaskProperty.class) public class JobApplication { /* @Autowired private TaskProperty taskProperty; */ public static void main(String[] args) { SpringApplication.run(JobApplication.class, args); } }
from https://stackoverflow.com/questions/4416955/initialize-default-locale-and-timezone-with-spring-configuration by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring MVC의 HttpServletRequest 객체에서 사용자의 시간대를 얻는 다른 방법이 있습니까? [복제] (0) | 2019.03.15 |
---|---|
[SPRING] 쿠키로 RestTemplate 클라이언트 (0) | 2019.03.15 |
[SPRING] 확장 성 및 테스트 가능성을 고려하면서 도메인 엔터티를 DTO로 올바르게 변환하는 방법 (0) | 2019.03.15 |
[SPRING] 스프링 부트에서 swagger-ui를 완전히 비활성화하는 방법 (/ swagger-ui.html은 404를 반환해야 함) (0) | 2019.03.15 |
[SPRING] Hibernate Validator와 함께 커스텀 ResourceBundle 사용하기 (0) | 2019.03.15 |