복붙노트

[SPRING] Spring : classpath 자원을위한 URL 삽입

SPRING

Spring : classpath 자원을위한 URL 삽입

Bean의 Spring에 대한 종속성을 생성하지 않는 방식으로 클래스 경로 리소스의 URL을 삽입하려고합니다. 즉, 빈은 Spring의 인터페이스 / 클래스를 사용하면 안된다. 어떻게해야합니까?

해결법

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

    1.Spring은 classpath : ... 값을 암시 적으로 java.net.URL로 변환 할 수있다.

    Spring은 classpath : ... 값을 암시 적으로 java.net.URL로 변환 할 수있다.

    public class Foo {
        private URL url;
        ...
    }
    

    .

    <bean class = "Foo">
        <property name = "url" value = "classpath:..." />
    </bean>
    
  2. ==============================

    2.axtavt의 대답에 이어 빈에서 Spring 주석을 허용한다면 다음과 같이 할 수있다.

    axtavt의 대답에 이어 빈에서 Spring 주석을 허용한다면 다음과 같이 할 수있다.

    @Value("classpath:myClasspathLocation") private URL url;
    
  3. ==============================

    3.MyClasspathResource와 같이 org.springframework.core.io.ClassPathResource를 확장하여 Spring 리소스의 구현을 직접 작성하면 ClassPathResource가 확장되어이 유형을 Bean에 삽입 할 수있다. 이렇게하면 봄에 의존 할 필요가 없으며 나중에 다른 것으로 리소스를 재 구현할 수 있습니다.

    MyClasspathResource와 같이 org.springframework.core.io.ClassPathResource를 확장하여 Spring 리소스의 구현을 직접 작성하면 ClassPathResource가 확장되어이 유형을 Bean에 삽입 할 수있다. 이렇게하면 봄에 의존 할 필요가 없으며 나중에 다른 것으로 리소스를 재 구현할 수 있습니다.

    <bean class="myBean">
     <property name="classPathType">
      <bean class="org.test.bla.MyClasspathResource">
       <constructor-arg index="0" value="classpath:/org/test/bla/MyUrl" />
      </bean>
     </property>
    </bean>
    
  4. ==============================

    4.Spring의 자원 개념과 동일한 비 스프링은 거의 없습니다.

    Spring의 자원 개념과 동일한 비 스프링은 거의 없습니다.

    예를 들어 구아바의 InputSupplier를 대안으로 사용할 수도 있지만 그렇게하면 강력한 표준 스프링 기능이 누락됩니다.

  5. from https://stackoverflow.com/questions/4578402/spring-inject-url-for-classpath-resource by cc-by-sa and MIT license