반응형
리소스를 로드하고 해당 리소스의 내용을 봄에 문자열로 사용하는 방법
Spring 리소스 컨텐츠를 로드하고 이를 사용하여 bean 속성을 설정하거나 인수 생성자로 전달하려면 어떻게 해야 합니까?
리소스에 사용 가능한 텍스트가 있습니다.
한 줄에서 test.xml을 읽어 보십시오.
String msg = StreamUtils.copyToString( new ClassPathResource("test.xml").getInputStream(), Charset.defaultCharset() );
<bean id="contents" class="org.apache.commons.io.IOUtils" factory-method="toString">
<constructor-arg value="classpath:path/to/resource.txt" type="java.io.InputStream" />
</bean>
이 솔루션에는 Apache Commons IO가 필요합니다.
@Parvez가 제안한 Apache Commons IO 의존성이 없는 또 다른 솔루션은
<bean id="contents" class="java.lang.String">
<constructor-arg>
<bean class="org.springframework.util.FileCopyUtils" factory-method="copyToByteArray">
<constructor-arg value="classpath:path/to/resource.txt" type="java.io.InputStream" />
</bean>
</constructor-arg>
</bean>
그냥 읽어보기만 하면 됩니다.
try {
Resource resource = new ClassPathResource(fileLocationInClasspath);
BufferedReader br = new BufferedReader(new InputStreamReader(resource.getInputStream()),1024);
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
stringBuilder.append(line).append('\n');
}
br.close();
return stringBuilder.toString();
} catch (Exception e) {
LOGGER.error(e);
}
2021년 업데이트.
스프링스를 사용하시면 됩니다.Resource
텍스트 파일의 내용을 가져온 후 사용하기 위한 인터페이스StreamUtils.copyToString(resource.getInputStream(), Charset.defaultCharset());
문자를 받기 위해서 입니다.
예는 다음과 같습니다.
@Value("classpath:appVersionFilePath")
private Resource resource;
@GetMapping(value = "/hello")
public HttpResult<String> hello() throws IOException {
String appVersion = StreamUtils.copyToString(resource.getInputStream(), Charset.defaultCharset());
// ...
}
이것은 외부 라이브러리를 사용하지 않고 수행할 수 있는 한 가지 방법입니다.봄이 제공하는 채무 불이행..environment.properties 파일에 키 값 쌍이 포함되어 있습니다. 각 값을 ${key}로 참조합니다.
예를 들어, 데이터베이스 소품을 보관하고 있습니다.
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list value-type="org.springframework.core.io.Resource">
<value>classpath:environment.properties</value>
</list>
</property>
</bean>
<bean id="mySQLdataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${JDBC.driver}" />
<property name="url" value="${JDBC.URL}" />
<property name="username" value="${JDBC.username}" />
<property name="password" value="${JDBC.password}" />
</bean>
daoway 답변이 매우 도움이 되었고, Adrian 발언에 따라 daoway의 코드와 유사한 구성 스니펫을 추가합니다.
<bean id="contents" class="org.springframework.core.io.ClassPathResource">
<constructor-arg value="path/to/resource.txt"/>
</bean>
구성요소에서
@Autowired
private Resource contents;
@PostConstruct
public void load(){
try {
final InputStream inputStream = contents.getInputStream();
//use the stream
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream ,1024);
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
stringBuilder.append(line).append('\n');
}
br.close();
}catch (IOException e) {
LOGGER.error(message);
}
}
봄
private String readResource(String fileName){
ResourceLoader resourceLoader = new DefaultResourceLoader();
Resource resource = resourceLoader.getResource("resourceSubfolder/"+fileName)
try{
Reader reader = new InputStreamReader(resource.getInputStream());
return FileCopyUtils.copyToString(reader);
} catch (IOException e){
e.printStackTrace();
}
return null;
}
언급URL : https://stackoverflow.com/questions/14022839/how-do-i-load-a-resource-and-use-its-contents-as-a-string-in-spring
반응형
'programing' 카테고리의 다른 글
UI 글꼴 - 시스템 얇은 글꼴을 가져오는 방법 (0) | 2023.10.29 |
---|---|
뒤로 가기 단추에서 텍스트를 변경하는 방법 (0) | 2023.10.29 |
mysql storage-procedure: out 매개변수 (0) | 2023.10.29 |
browser.pause()와 browser.enterRepl()의 차이점은 무엇입니까? (0) | 2023.10.29 |
최근 한 시간 동안 수정된 테이블 찾기 쿼리 (0) | 2023.10.29 |