記錄

Spring) .xml을 통한 List 세팅 본문

Web/Spring framework

Spring) .xml을 통한 List 세팅

surhommejk 2018. 4. 28. 13:34


public class Program {
    public static void main(String[] args) {
        /*
        ProtocolHandler handler = new ProtocolHandler();
        
        ArrayList<MyFilter> arraylist = new ArrayList<>();
        arraylist.add(new EncFilter());
        arraylist.add(new HeaderFilter());
        arraylist.add(new ZipFilter());
        
        handler.setFilters(arraylist);
        */
        
        ApplicationContext context =
                new GenericXmlApplicationContext("classpath:DI_07_Spring/DI_07.xml");
        ProtocolHandler handler = context.getBean("handler",ProtocolHandler.class);
        System.out.println(handler.filter_length()); // 3이 찍힌다
    }
}


<bean id="handler" class="DI_07_Spring.ProtocolHandler">
<property name="filters">
    <list>
        <ref bean="encfilter" />
        <ref bean="headerfilter" />
        <ref bean="zipfilter" />
    </list>
</property>
</bean>
<bean id="encfilter" class="DI_07_Spring.EncFilter"></bean>
<bean id="headerfilter" class="DI_07_Spring.HeaderFilter"></bean>
<bean id="zipfilter" class="DI_07_Spring.ZipFilter"></bean>


public class ProtocolHandler {
    
    private List<MyFilter> filters;

    public List<MyFilter> getFilters() {
        return filters;
    }

    public void setFilters(List<MyFilter> filters) {
        this.filters = filters;
    }
    
    public int filter_length() {
        return this.filters.size();
    }
}



xml에서 list에 들어갈 element로서의 클래스들도 세팅이 가능하고 방법은 위와 같다.(HashMap에서는 확인이 필요) 약간 의아했던 것은 xml에서 list에 넣는 bean이 아직 선언되지도 않은 bean들인데도 가능하다는 점인데 xml에서 bean 생성이 가장 우선순위이기 때문이다. bean 생성을 가장 먼저 다 해놓은 뒤 다른 코드들을 실행한다고 보면 된다.


Comments