복붙노트

[SPRING] 리소스를로드하고 그 내용을 Spring의 문자열로 사용하려면 어떻게해야합니까?

SPRING

리소스를로드하고 그 내용을 Spring의 문자열로 사용하려면 어떻게해야합니까?

Spring 리소스 컨텐트를로드하고 bean 속성을 설정하거나 그것을 인수 생성자로 전달하기 위해 어떻게 사용할 수 있습니까?

리소스에 자유 텍스트가 있습니다.

해결법

  1. ==============================

    1.

    <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가 필요합니다.

    Apache Commons IO 의존성이없는 @Parvez가 제안한 또 다른 해결책은 다음과 같습니다.

    <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>
    
  2. ==============================

    2.한 줄에 test.xml을 읽어보십시오.

    한 줄에 test.xml을 읽어보십시오.

    String msg = StreamUtils.copyToString( new ClassPathResource("test.xml").getInputStream(), Charset.defaultCharset()  );
    
  3. ==============================

    3.그냥 읽으십시오.

    그냥 읽으십시오.

        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);
        }
    
  4. ==============================

    4.이것은 외부 라이브러리를 사용하지 않고 그것을 수행하는 한 방법입니다. spring.allow.properties 파일에서 제공하는 기본값은 키 값 쌍을 포함합니다 ... $ {key}

    이것은 외부 라이브러리를 사용하지 않고 그것을 수행하는 한 방법입니다. spring.allow.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>
    
  5. ==============================

    5.daoway 대답은 매우 유용했으며 Adrian의 말에 따라 daoway 코드와 비슷한 구성 스 니펫을 추가하고 있습니다.

    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);
         }
      }
    
  6. from https://stackoverflow.com/questions/14022839/how-do-i-load-a-resource-and-use-its-contents-as-a-string-in-spring by cc-by-sa and MIT license