[SPRING] Spring 구성 파일에서 <util : list>를 다시 사용할 수 있습니까?
SPRINGSpring 구성 파일에서 를 다시 사용할 수 있습니까?
나는 일련의 클래스들에 주입 될 규칙들을 가지고 있는데, 다음과 같다.
<bean id="rule1" class="com.vikdor.rules.Rule1" />
<bean id="rule2" class="com.vikdor.rules.Rule2" />
<bean id="rule3" class="com.vikdor.rules.Rule3" />
<bean id="rule4" class="com.vikdor.rules.Rule4" />
<bean id="rule5" class="com.vikdor.rules.Rule5" />
<util:list id="commonRules">
<ref bean="rule1" />
<ref bean="rule3" />
<ref bean="rule5" />
</util:list>
<util:list id="normalInvRules">
<!-- Include common rules -->
<ref bean="rule4" />
</util:list>
<util:list id="prepaidInvRules">
<!-- Include common rules -->
<ref bean="rule2" />
</util:list>
normalInvRules 및 prepaidInvRules에 해당하는 목록에 공통 규칙 목록을 포함하려면 어떻게해야합니까?
규칙 수 (예 : rule1, rule2 등)가 많고 숫자 그룹 (normalInvRules, prepaidInvRules 등)도 많습니다. 그래서 일반적인 규칙을 반복하지 않고 특정 목록 만 나열하고 공통 목록에 대한 참조를 포함하는 방법이 있는지 궁금합니다.
해결법
-
==============================
1.이 작업을 정확하게 수행하는 '컬렉션 병합'기능이 있습니다. 3.3.3.4.1 절 참조. Spring 문서의 "Collection merging" 또는 주제에 쓴 2008 년 블로그 게시물 (예를 들어).
이 작업을 정확하게 수행하는 '컬렉션 병합'기능이 있습니다. 3.3.3.4.1 절 참조. Spring 문서의 "Collection merging" 또는 주제에 쓴 2008 년 블로그 게시물 (예를 들어).
-
==============================
2.@GreyBeardedGeek에서 제안한 접근 방식이 마음에 듭니다. 단지 몇 가지 제안을 던지고 싶습니다.
@GreyBeardedGeek에서 제안한 접근 방식이 마음에 듭니다. 단지 몇 가지 제안을 던지고 싶습니다.
에이. xml의 기본 규칙 목록을 사용하여 @Configuration을 사용하여이를 수행합니다.
@Configuration @ImportResource("classpath:/baseconfig.xml") public static class RulesConfiguration{ @Resource List<Rule> commonRules; @Bean public List<Rule> normalInvRules(){ List<Rule> rules = new ArrayList<Rule>(); rules.addAll(commonRules); rules.add(new Rule()); return rules; } }
비. 커스텀 factory bean을 사용하여리스트를 확장한다 :
class ListExpandingFactoryBean<T> implements FactoryBean<List<T>>{ private List<T> baseList; private List<T> extendedList; @Override public List<T> getObject() throws Exception { List<T> consolidatedList = new ArrayList<T>(); consolidatedList.addAll(baseList); consolidatedList.addAll(extendedList); return consolidatedList; } @Override public Class<?> getObjectType() { return List.class; } @Override public boolean isSingleton() { return false; } public void setBaseList(List<T> baseList) { this.baseList = baseList; } public List<T> getExtendedList() { return extendedList; } public void setExtendedList(List<T> extendedList) { this.extendedList = extendedList; } }
이것을 다음과 같이 사용합니다 :
<bean name="normalInvRules" class="ListExpandingFactoryBean" p:baseList-ref="commonRules"> <property name="extendedList"> <list> <ref bean="bean4"/> </list> </property> </bean>
-
==============================
3.답변 해 주셔서 감사합니다. 이것이 Collection Merging을 사용하여 마침내 해결 한 방법입니다.
답변 해 주셔서 감사합니다. 이것이 Collection Merging을 사용하여 마침내 해결 한 방법입니다.
<bean id="rule1" class="com.krovi.rules.Rule1" /> <bean id="rule2" class="com.krovi.rules.Rule2" /> <bean id="rule3" class="com.krovi.rules.Rule3" /> <bean id="rule4" class="com.krovi.rules.Rule4" /> <bean id="rule5" class="com.krovi.rules.Rule5" /> <bean id="commonList" class="org.springframework.beans.factory.config.ListFactoryBean"> <property name="sourceList"> <list> <ref bean="rule1" /> <ref bean="rule2" /> <ref bean="rule3" /> </list> </property> </bean> <bean id="firstExecutorRules" parent="commonList" class="org.springframework.beans.factory.config.ListFactoryBean"> <property name="sourceList"> <list merge="true"> <ref bean="rule4" /> </list> </property> </bean> <bean id="secondExecutorRules" parent="commonList" class="org.springframework.beans.factory.config.ListFactoryBean"> <property name="sourceList"> <list merge="true"> <ref bean="rule5" /> </list> </property> </bean>
-
==============================
4.공통 규칙을 가진 클래스를 생성하고 다른 규칙으로 자동 와이어 할 수 있습니까? 그게 효과가 없을까요?
공통 규칙을 가진 클래스를 생성하고 다른 규칙으로 자동 와이어 할 수 있습니까? 그게 효과가 없을까요?
XML 구성을 사용하여 동일한 접근 방식을 취할 수 있으며 ref 속성을 사용하여 삽입 할 수도 있습니다.
from https://stackoverflow.com/questions/12760436/is-there-a-way-to-re-use-a-utillist-in-spring-configuration-file by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 끊임없이 끝나는 루프에서 끝나는 Spring 배치 반복 단계 (0) | 2019.02.21 |
---|---|
[SPRING] 봄 일괄 처리에서 끝나지 않은 큰 따옴표 (0) | 2019.02.21 |
[SPRING] Struts2.3.12 junit4 테스트 케이스 요청 및 세션이 null입니다. (0) | 2019.02.21 |
[SPRING] JBoss 6 + Spring 3.0.5 + JAX-WS / CXF (0) | 2019.02.21 |
[SPRING] 응용 프로그램을 전개하는 java.lang.AbstractMethodError (Spring 4 MVC + Hibernate 4/5) (0) | 2019.02.21 |