<!--
 - Copyright 1999-2011 Alibaba Group.
 -  
 - Licensed under the Apache License, Version 2.0 (the "License");
 - you may not use this file except in compliance with the License.
 - You may obtain a copy of the License at
 -  
 -      http://www.apache.org/licenses/LICENSE-2.0
 -  
 - Unless required by applicable law or agreed to in writing, software
 - distributed under the License is distributed on an "AS IS" BASIS,
 - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 - See the License for the specific language governing permissions and
 - limitations under the License.
-->
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
    http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd" default-autowire="byName">
    
    <context:annotation-config />
    <bean id="demoInterceptor" class="com.alibaba.dubbo.config.spring.action.DemoInterceptor" />
	<bean id="demoAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
        <property name="advice" ref="demoInterceptor" />
        <property name="patterns">
            <list>
                <value>.*</value>
            </list>
        </property>
    </bean>
    <bean id="demoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
        <property name="beanNames">
            <list>
                <value>demoService</value>
            </list>
        </property>
        <property name="interceptorNames">
            <list>
                <value>demoAdvisor</value>
            </list>
        </property>
    </bean>
    
    <!-- 当前应用信息配置 -->
    <dubbo:application name="consumer" />
    
    <!-- 连接注册中心配置 -->
    <dubbo:registry address="N/A" />
    
    <!-- 引用服务配置 -->
    <dubbo:reference id="demoService" interface="com.alibaba.dubbo.config.spring.api.DemoService" url="dubbo://127.0.0.1:20813" />

	<bean id="demoActionBySetter" class="com.alibaba.dubbo.config.spring.action.DemoActionBySetter" />
 
	<bean id="demoActionByAnnotation" class="com.alibaba.dubbo.config.spring.action.DemoActionByAnnotation" />
 
</beans>