Spring 국제 화 자원 대량 사용 개선
xml 설정
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/classes/com/strong/messages/messages" />
<property name="cacheSeconds" value="0" />
</bean>
수정 할 것 은 바로 "org. spring from work. context. support. Reloadable Resource BundleMessageSource" 입 니 다. 저 는 class: com. strong. utils. spring. Reloadable Resource BundleMessageSource 를 재 구축 하여 일부 코드 를 수정 하 였 습 니 다.
public void setBasenames(String[] basenames) {
if (basenames != null && basenames.length > 0) {
String strWebPath = this.getClass().getClassLoader().getResource("../../").getPath();
String strBasePath = strWebPath + basenames[0];
try {
List<File> listFile = FileUtils.getSuoYouWenJianLuJing(strBasePath);
List<String> listFile1 = new ArrayList<String>();
for (File file : listFile) {
if (!file.isDirectory() && file.getName().indexOf("_") == -1 && file.getName().indexOf(".properties") > -1) {
listFile1.add(file.getAbsolutePath().replace(strWebPath, "").replace(".properties", ""));
}
}
this.basenames = new String[listFile1.size()];
for (int i = 0; i < listFile1.size(); i++) {
this.basenames[i] = listFile1.get(i).trim();
System.out.println("load properties file: " + listFile1.get(i).trim());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// this.basenames = new String[basenames.length];
// for (int i = 0; i < basenames.length; i++) {
// String basename = basenames[i];
// Assert.hasText(basename, "Basename must not be empty");
// this.basenames[i] = basename.trim();
// System.out.println(basename);
// }
} else {
this.basenames = new String[0];
}
}
결합 부분 을 최대한 줄 이기 위해 서 는 list 에서 자원 파일 배열 을 첫 번 째 만 가 져 오 는 것 으로 바 꾸 고 이 디 렉 터 리 를 옮 겨 다 니 며 모든 properties 확장 자 를 포함 하지 않 습 니 다파일 의 상대 경 로 를 basenames 에 추가 하면 다른 것 은 변 하지 않 습 니 다.파일 디 렉 터 리 를 옮 겨 다 니 는 코드:
public static List<File> getSuoYouWenJianLuJing(String strLuJing) throws IOException {
if (strLuJing == null || strLuJing.length() == 0) {
return null;
}
File fileLuJing = new File(strLuJing);
if (!fileLuJing.exists()) {
return null;
}
return getSuoYouWenJianLuJing(fileLuJing);
}
XML 파일 을 다음 과 같이 다시 수정 합 니 다.
<bean id="messageSource" class="com.strong.utils.spring.ReloadableResourceBundleMessageSource">
<property name="basenames" value="WEB-INF/classes/com/strong" />
<property name="cacheSeconds" value="0" />
</bean>
OK 완공, 코드 작성 이 매우 거 칠 고 Reloadable ResourceBundleMessageSource 류 만 수정 되 었 습 니 다. 그러나 의사 와 생각 이 많이 다 르 지 않 습 니 다. 마스크 를 사용 하여 자원 파일 을 가 져 오 는 것 은 / WEB - INF / classes / com / strong / * / messages 등 과 유사 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.