[SPRING] 동적 속성 목록을 스프링 관리 빈으로 읽기
SPRING동적 속성 목록을 스프링 관리 빈으로 읽기
나는 검색했지만 이러한 단계를 찾을 수 없습니다. 나는 명백한 것을 놓치기를 바란다.
다음 내용이있는 속성 파일이 있습니다.
machines=A,B
나는 이와 같은 다른 파일을 가지고 있지만 다음과 같이 machines 요소에 다른 수의 멤버가 있습니다.
machines=B,C,D
내 질문은 일반적인 방법으로 내 봄 설정에 콩이 가변 길이 기계 변수를로드 할 수 있습니까?
이 같은:
<property name="machines" value="${machines}"/>
여기서 machines는 배열 또는 자바 코드의 목록입니다. 나는 그것을 정의 할 수 있지만, 만약 내가 이것을 어떻게 할 수 있는지 알고 싶다.
기본적으로 나는 스프링을 사용하여 구문 분석을하고 각 값을 목록 요소에 집어 넣지 않고 전체 컴퓨터 문자열을 읽고 (쉼표 구분 기호로) 구문 분석을 수행하여 각 값을 배열에 저장해야합니다. 또는 목록. 이 작업을 쉽게 수행 할 수있는 방법이 있습니까?
해결법
-
==============================
1.Spring의 StringUtils 클래스를 살펴볼 수도 있습니다. 쉼표로 구분 된 목록을 Set 또는 String 배열로 변환하는 유용한 메소드가 많이 있습니다. Spring의 팩토리 메소드 프레임 워크를 사용하여 이러한 유틸리티 메소드를 사용하여 구문 분석 된 값을 bean에 삽입 할 수 있습니다. 다음은 그 예입니다.
Spring의 StringUtils 클래스를 살펴볼 수도 있습니다. 쉼표로 구분 된 목록을 Set 또는 String 배열로 변환하는 유용한 메소드가 많이 있습니다. Spring의 팩토리 메소드 프레임 워크를 사용하여 이러한 유틸리티 메소드를 사용하여 구문 분석 된 값을 bean에 삽입 할 수 있습니다. 다음은 그 예입니다.
<property name="machines"> <bean class="org.springframework.util.StringUtils" factory-method="commaDelimitedListToSet"> <constructor-arg type="java.lang.String" value="${machines}"/> </bean> </property>
이 예제에서 'machines'값은 특성 파일에서로드됩니다.
기존의 유틸리티 메소드가 사용자의 요구를 충족시키지 못하면 자신 만의 유틸리티 메소드를 작성하는 것은 매우 간단합니다. 이 기술을 사용하면 정적 유틸리티 메소드를 실행할 수 있습니다.
-
==============================
2.스프링 EL이 쉬워집니다. 자바:
스프링 EL이 쉬워집니다. 자바:
List <String> machines;
문맥:
<property name="machines" value="#{T(java.util.Arrays).asList('${machines}')}"/>
-
==============================
3."machines"속성을 String 배열로 만들면 Spring이 자동으로 문자열 배열을 처리합니다.
"machines"속성을 String 배열로 만들면 Spring이 자동으로 문자열 배열을 처리합니다.
machines=B,C,D <property name="machines" value="${machines}"/> public void setMachines(String[] test) {
-
==============================
4.Spring 3.0부터는 @Value 주석을 사용하여 값 목록을 읽을 수도 있습니다.
Spring 3.0부터는 @Value 주석을 사용하여 값 목록을 읽을 수도 있습니다.
속성 파일 :
machines=B,C,D
자바 코드 :
import org.springframework.beans.factory.annotation.Value; @Value("#{'${machines}'.split(',')}") private List<String> machines;
-
==============================
5.보일러 플레이트 코드없이 직접 목록에 값을 삽입 할 수 있습니다 (Spring 3.1 이상).
보일러 플레이트 코드없이 직접 목록에 값을 삽입 할 수 있습니다 (Spring 3.1 이상).
@Value("${machines}") private List<String> machines;
구성에 다음 두 인스턴스를 작성하여 등록 정보 파일에서 "machines = B, C, D"키를 누르십시오.
@Bean public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() { return new PropertySourcesPlaceholderConfigurer(); } @Bean public ConversionService conversionService() { return new DefaultConversionService(); }
그것들은 분리 된 모든 분리와 공백을 모두 다룰 것입니다.
from https://stackoverflow.com/questions/5274362/reading-a-dynamic-property-list-into-a-spring-managed-bean by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring MVC에서 web.xml에 ContextLoaderListener 추가하기 (0) | 2018.12.24 |
---|---|
[SPRING] 봄 부팅 및 맞춤 404 오류 페이지 (0) | 2018.12.23 |
[SPRING] 두 컨텍스트에 빈이 포함되도록 Java-config 클래스를 XML-config로 가져 오는 방법은 무엇입니까? (0) | 2018.12.23 |
[SPRING] Spring 3.0 MVC 바인딩 Enums 대 / 소문자 구분 (0) | 2018.12.23 |
[SPRING] ApplicationContext 자체 삽입하는 법 (0) | 2018.12.23 |