diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2af7cef
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,24 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+nbproject/private/
+build/
+nbbuild/
+dist/
+nbdist/
+.nb-gradle/
\ No newline at end of file
diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar
new file mode 100644
index 0000000..9cc84ea
--- /dev/null
+++ b/.mvn/wrapper/maven-wrapper.jar
Binary files differ
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..c315043
--- /dev/null
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1 @@
+distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.0/apache-maven-3.5.0-bin.zip
diff --git a/mvnw b/mvnw
new file mode 100755
index 0000000..5bf251c
--- /dev/null
+++ b/mvnw
@@ -0,0 +1,225 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+# ----------------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Maven2 Start Up Batch script
+#
+# Required ENV vars:
+# ------------------
+#   JAVA_HOME - location of a JDK home dir
+#
+# Optional ENV vars
+# -----------------
+#   M2_HOME - location of maven2's installed home dir
+#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
+#     e.g. to debug Maven itself, use
+#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+# ----------------------------------------------------------------------------
+
+if [ -z "$MAVEN_SKIP_RC" ] ; then
+
+  if [ -f /etc/mavenrc ] ; then
+    . /etc/mavenrc
+  fi
+
+  if [ -f "$HOME/.mavenrc" ] ; then
+    . "$HOME/.mavenrc"
+  fi
+
+fi
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+mingw=false
+case "`uname`" in
+  CYGWIN*) cygwin=true ;;
+  MINGW*) mingw=true;;
+  Darwin*) darwin=true
+    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
+    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
+    if [ -z "$JAVA_HOME" ]; then
+      if [ -x "/usr/libexec/java_home" ]; then
+        export JAVA_HOME="`/usr/libexec/java_home`"
+      else
+        export JAVA_HOME="/Library/Java/Home"
+      fi
+    fi
+    ;;
+esac
+
+if [ -z "$JAVA_HOME" ] ; then
+  if [ -r /etc/gentoo-release ] ; then
+    JAVA_HOME=`java-config --jre-home`
+  fi
+fi
+
+if [ -z "$M2_HOME" ] ; then
+  ## resolve links - $0 may be a link to maven's home
+  PRG="$0"
+
+  # need this for relative symlinks
+  while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+      PRG="$link"
+    else
+      PRG="`dirname "$PRG"`/$link"
+    fi
+  done
+
+  saveddir=`pwd`
+
+  M2_HOME=`dirname "$PRG"`/..
+
+  # make it fully qualified
+  M2_HOME=`cd "$M2_HOME" && pwd`
+
+  cd "$saveddir"
+  # echo Using m2 at $M2_HOME
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME=`cygpath --unix "$M2_HOME"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+# For Migwn, ensure paths are in UNIX format before anything is touched
+if $mingw ; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME="`(cd "$M2_HOME"; pwd)`"
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
+  # TODO classpath?
+fi
+
+if [ -z "$JAVA_HOME" ]; then
+  javaExecutable="`which javac`"
+  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
+    # readlink(1) is not available as standard on Solaris 10.
+    readLink=`which readlink`
+    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
+      if $darwin ; then
+        javaHome="`dirname \"$javaExecutable\"`"
+        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
+      else
+        javaExecutable="`readlink -f \"$javaExecutable\"`"
+      fi
+      javaHome="`dirname \"$javaExecutable\"`"
+      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
+      JAVA_HOME="$javaHome"
+      export JAVA_HOME
+    fi
+  fi
+fi
+
+if [ -z "$JAVACMD" ] ; then
+  if [ -n "$JAVA_HOME"  ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+      # IBM's JDK on AIX uses strange locations for the executables
+      JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+      JAVACMD="$JAVA_HOME/bin/java"
+    fi
+  else
+    JAVACMD="`which java`"
+  fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+  echo "Error: JAVA_HOME is not defined correctly." >&2
+  echo "  We cannot execute $JAVACMD" >&2
+  exit 1
+fi
+
+if [ -z "$JAVA_HOME" ] ; then
+  echo "Warning: JAVA_HOME environment variable is not set."
+fi
+
+CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
+
+# traverses directory structure from process work directory to filesystem root
+# first directory with .mvn subdirectory is considered project base directory
+find_maven_basedir() {
+
+  if [ -z "$1" ]
+  then
+    echo "Path not specified to find_maven_basedir"
+    return 1
+  fi
+
+  basedir="$1"
+  wdir="$1"
+  while [ "$wdir" != '/' ] ; do
+    if [ -d "$wdir"/.mvn ] ; then
+      basedir=$wdir
+      break
+    fi
+    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
+    if [ -d "${wdir}" ]; then
+      wdir=`cd "$wdir/.."; pwd`
+    fi
+    # end of workaround
+  done
+  echo "${basedir}"
+}
+
+# concatenates all lines of a file
+concat_lines() {
+  if [ -f "$1" ]; then
+    echo "$(tr -s '\n' ' ' < "$1")"
+  fi
+}
+
+BASE_DIR=`find_maven_basedir "$(pwd)"`
+if [ -z "$BASE_DIR" ]; then
+  exit 1;
+fi
+
+export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
+echo $MAVEN_PROJECTBASEDIR
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME=`cygpath --path --windows "$M2_HOME"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
+    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
+fi
+
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+exec "$JAVACMD" \
+  $MAVEN_OPTS \
+  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
+  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/mvnw.cmd b/mvnw.cmd
new file mode 100644
index 0000000..019bd74
--- /dev/null
+++ b/mvnw.cmd
@@ -0,0 +1,143 @@
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements.  See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership.  The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License.  You may obtain a copy of the License at
+@REM
+@REM    http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied.  See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Maven2 Start Up Batch script
+@REM
+@REM Required ENV vars:
+@REM JAVA_HOME - location of a JDK home dir
+@REM
+@REM Optional ENV vars
+@REM M2_HOME - location of maven2's installed home dir
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+@REM     e.g. to debug Maven itself, use
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM ----------------------------------------------------------------------------
+
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
+
+@REM set %HOME% to equivalent of $HOME
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
+if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
+if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM To isolate internal variables from possible post scripts, we use another setlocal
+@setlocal
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo.
+echo Error: JAVA_HOME not found in your environment. >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto init
+
+echo.
+echo Error: JAVA_HOME is set to an invalid directory. >&2
+echo JAVA_HOME = "%JAVA_HOME%" >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+@REM ==== END VALIDATION ====
+
+:init
+
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
+@REM Fallback to current working directory if not found.
+
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set EXEC_DIR=%CD%
+set WDIR=%EXEC_DIR%
+:findBaseDir
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set WDIR=%CD%
+goto findBaseDir
+
+:baseDirFound
+set MAVEN_PROJECTBASEDIR=%WDIR%
+cd "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
+cd "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
+if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
+if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%" == "on" pause
+
+if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
+
+exit /B %ERROR_CODE%
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..28250c7
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>com.alibaba.dubbo</groupId>
+	<artifactId>dubbo-feature-test</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<packaging>jar</packaging>
+
+	<name>dubbo-feature-test</name>
+	<description>Test project for Dubbo</description>
+
+	<parent>
+		<groupId>org.springframework.boot</groupId>
+		<artifactId>spring-boot-starter-parent</artifactId>
+		<version>1.5.6.RELEASE</version>
+		<relativePath/> <!-- lookup parent from repository -->
+	</parent>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+		<java.version>1.8</java.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>dubbo</artifactId>
+			<version>2.5.4</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.javassist</groupId>
+					<artifactId>javassist</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.javassist</groupId>
+			<artifactId>javassist</artifactId>
+			<version>3.20.0-GA</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.zookeeper</groupId>
+			<artifactId>zookeeper</artifactId>
+			<version>3.4.9</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.curator</groupId>
+			<artifactId>curator-framework</artifactId>
+			<version>2.12.0</version>
+		</dependency>
+
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+
+
+</project>
diff --git a/src/main/java/com/alibaba/dubbo/test/DubboFeatureTestApplication.java b/src/main/java/com/alibaba/dubbo/test/DubboFeatureTestApplication.java
new file mode 100644
index 0000000..0f26ebb
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/DubboFeatureTestApplication.java
@@ -0,0 +1,12 @@
+package com.alibaba.dubbo.test;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class DubboFeatureTestApplication {
+
+	public static void main(String[] args) {
+		SpringApplication.run(DubboFeatureTestApplication.class, args);
+	}
+}
diff --git a/src/main/java/com/alibaba/dubbo/test/conf/CatConfiguration.java b/src/main/java/com/alibaba/dubbo/test/conf/CatConfiguration.java
new file mode 100644
index 0000000..a8b5ae1
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/conf/CatConfiguration.java
@@ -0,0 +1,10 @@
+package com.alibaba.dubbo.test.conf;
+
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * Created by ken.lj on 2017/9/8.
+ */
+@Configuration
+public class CatConfiguration {
+}
diff --git a/src/main/java/com/alibaba/dubbo/test/conf/DogConfiguration.java b/src/main/java/com/alibaba/dubbo/test/conf/DogConfiguration.java
new file mode 100644
index 0000000..ca83e5c
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/conf/DogConfiguration.java
@@ -0,0 +1,7 @@
+package com.alibaba.dubbo.test.conf;
+
+/**
+ * Created by ken.lj on 2017/9/8.
+ */
+public class DogConfiguration {
+}
diff --git a/src/main/java/com/alibaba/dubbo/test/conf/DubboConfiguration.java b/src/main/java/com/alibaba/dubbo/test/conf/DubboConfiguration.java
new file mode 100644
index 0000000..18520cc
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/conf/DubboConfiguration.java
@@ -0,0 +1,13 @@
+package com.alibaba.dubbo.test.conf;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.ImportResource;
+
+/**
+ * Created by ken.lj on 2017/9/10.
+ */
+@Configuration
+@ImportResource(locations = "classpath:dubbo-${spring.profiles.active}.xml")
+public class DubboConfiguration {
+
+}
diff --git a/src/main/java/com/alibaba/dubbo/test/conf/LionConfiguration.java b/src/main/java/com/alibaba/dubbo/test/conf/LionConfiguration.java
new file mode 100644
index 0000000..02eb06c
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/conf/LionConfiguration.java
@@ -0,0 +1,7 @@
+package com.alibaba.dubbo.test.conf;
+
+/**
+ * Created by ken.lj on 2017/9/8.
+ */
+public class LionConfiguration {
+}
diff --git a/src/main/java/com/alibaba/dubbo/test/conf/MouseConfiguration.java b/src/main/java/com/alibaba/dubbo/test/conf/MouseConfiguration.java
new file mode 100644
index 0000000..3111495
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/conf/MouseConfiguration.java
@@ -0,0 +1,7 @@
+package com.alibaba.dubbo.test.conf;
+
+/**
+ * Created by ken.lj on 2017/9/8.
+ */
+public class MouseConfiguration {
+}
diff --git a/src/main/java/com/alibaba/dubbo/test/dto/Bait.java b/src/main/java/com/alibaba/dubbo/test/dto/Bait.java
new file mode 100644
index 0000000..6747ff2
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/dto/Bait.java
@@ -0,0 +1,50 @@
+package com.alibaba.dubbo.test.dto;
+
+import java.io.Serializable;
+
+/**
+ * Created by ken.lj on 2017/9/8.
+ */
+public class Bait implements Serializable {
+    private int id;
+
+    private boolean cook ;
+
+    private String taste;
+
+    Bait() {}
+
+    Bait(int id, String taste) {
+        this(id, false, taste);
+    }
+
+    Bait(int id, boolean cook, String taste) {
+        this.id = id;
+        this.cook = cook;
+        this.taste = taste;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public boolean isCook() {
+        return cook;
+    }
+
+    public void setCook(boolean cook) {
+        this.cook = cook;
+    }
+
+    public String getTaste() {
+        return taste;
+    }
+
+    public void setTaste(String taste) {
+        this.taste = taste;
+    }
+}
diff --git a/src/main/java/com/alibaba/dubbo/test/dto/Taste.java b/src/main/java/com/alibaba/dubbo/test/dto/Taste.java
new file mode 100644
index 0000000..04e072b
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/dto/Taste.java
@@ -0,0 +1,7 @@
+package com.alibaba.dubbo.test.dto;
+
+/**
+ * Created by ken.lj on 2017/9/8.
+ */
+public enum Taste {
+}
diff --git a/src/main/java/com/alibaba/dubbo/test/service/CatService.java b/src/main/java/com/alibaba/dubbo/test/service/CatService.java
new file mode 100644
index 0000000..913499f
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/service/CatService.java
@@ -0,0 +1,12 @@
+package com.alibaba.dubbo.test.service;
+
+import com.alibaba.dubbo.test.dto.Bait;
+
+/**
+ * Created by ken.lj on 2017/9/8.
+ */
+public interface CatService {
+    void eat(Bait bait);
+
+    void getName();
+}
diff --git a/src/main/java/com/alibaba/dubbo/test/service/DogService.java b/src/main/java/com/alibaba/dubbo/test/service/DogService.java
new file mode 100644
index 0000000..3fe98b9
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/service/DogService.java
@@ -0,0 +1,10 @@
+package com.alibaba.dubbo.test.service;
+
+/**
+ * Created by ken.lj on 2017/9/8.
+ */
+public interface DogService {
+    void eat();
+
+    void getName();
+}
diff --git a/src/main/java/com/alibaba/dubbo/test/service/LionService.java b/src/main/java/com/alibaba/dubbo/test/service/LionService.java
new file mode 100644
index 0000000..900ed88
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/service/LionService.java
@@ -0,0 +1,10 @@
+package com.alibaba.dubbo.test.service;
+
+/**
+ * Created by ken.lj on 2017/9/8.
+ */
+public interface LionService {
+    void eat();
+
+    void getName();
+}
diff --git a/src/main/java/com/alibaba/dubbo/test/service/MouseService.java b/src/main/java/com/alibaba/dubbo/test/service/MouseService.java
new file mode 100644
index 0000000..c02c03d
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/service/MouseService.java
@@ -0,0 +1,10 @@
+package com.alibaba.dubbo.test.service;
+
+/**
+ * Created by ken.lj on 2017/9/8.
+ */
+public interface MouseService {
+    void eat();
+
+    String getName();
+}
diff --git a/src/main/java/com/alibaba/dubbo/test/service/impl/CatServiceImpl.java b/src/main/java/com/alibaba/dubbo/test/service/impl/CatServiceImpl.java
new file mode 100644
index 0000000..cf8f251
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/service/impl/CatServiceImpl.java
@@ -0,0 +1,26 @@
+package com.alibaba.dubbo.test.service.impl;
+
+import com.alibaba.dubbo.test.dto.Bait;
+import com.alibaba.dubbo.test.service.CatService;
+import com.alibaba.dubbo.test.service.MouseService;
+
+import org.springframework.stereotype.Service;
+
+/**
+ * Created by ken.lj on 2017/9/8.
+ */
+@Service("catService")
+public class CatServiceImpl implements CatService {
+
+    private MouseService mouseService;
+
+    @Override
+    public void eat(Bait bait) {
+
+    }
+
+    @Override
+    public void getName() {
+
+    }
+}
diff --git a/src/main/java/com/alibaba/dubbo/test/service/impl/DogServiceImpl.java b/src/main/java/com/alibaba/dubbo/test/service/impl/DogServiceImpl.java
new file mode 100644
index 0000000..3e5077d
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/service/impl/DogServiceImpl.java
@@ -0,0 +1,27 @@
+package com.alibaba.dubbo.test.service.impl;
+
+import com.alibaba.dubbo.test.service.CatService;
+import com.alibaba.dubbo.test.service.DogService;
+import com.alibaba.dubbo.test.service.MouseService;
+
+import org.springframework.stereotype.Service;
+
+/**
+ * Created by ken.lj on 2017/9/8.
+ */
+@Service("dogService")
+public class DogServiceImpl implements DogService {
+    private CatService catService;
+
+    private MouseService mouseService;
+
+    @Override
+    public void eat() {
+
+    }
+
+    @Override
+    public void getName() {
+
+    }
+}
diff --git a/src/main/java/com/alibaba/dubbo/test/service/impl/LionServiceImpl.java b/src/main/java/com/alibaba/dubbo/test/service/impl/LionServiceImpl.java
new file mode 100644
index 0000000..83dcd74
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/service/impl/LionServiceImpl.java
@@ -0,0 +1,30 @@
+package com.alibaba.dubbo.test.service.impl;
+
+import com.alibaba.dubbo.test.service.CatService;
+import com.alibaba.dubbo.test.service.DogService;
+import com.alibaba.dubbo.test.service.LionService;
+import com.alibaba.dubbo.test.service.MouseService;
+
+import org.springframework.stereotype.Service;
+
+/**
+ * Created by ken.lj on 2017/9/8.
+ */
+@Service("lionService")
+public class LionServiceImpl implements LionService {
+    private CatService catService;
+
+    private MouseService mouseService;
+
+    private DogService dogService;
+
+    @Override
+    public void eat() {
+
+    }
+
+    @Override
+    public void getName() {
+
+    }
+}
diff --git a/src/main/java/com/alibaba/dubbo/test/service/impl/MouseServiceImpl.java b/src/main/java/com/alibaba/dubbo/test/service/impl/MouseServiceImpl.java
new file mode 100644
index 0000000..1ae731a
--- /dev/null
+++ b/src/main/java/com/alibaba/dubbo/test/service/impl/MouseServiceImpl.java
@@ -0,0 +1,21 @@
+package com.alibaba.dubbo.test.service.impl;
+
+import com.alibaba.dubbo.test.service.MouseService;
+
+import org.springframework.stereotype.Service;
+
+/**
+ * Created by ken.lj on 2017/9/8.
+ */
+
+public class MouseServiceImpl implements MouseService {
+    @Override
+    public void eat() {
+
+    }
+
+    @Override
+    public String getName() {
+        return "Mickey mouse";
+    }
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/main/resources/application.properties
diff --git a/src/main/resources/dubbo-cat.xml b/src/main/resources/dubbo-cat.xml
new file mode 100644
index 0000000..d618fc9
--- /dev/null
+++ b/src/main/resources/dubbo-cat.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ - 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:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
+       xmlns="http://www.springframework.org/schema/beans"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
+
+    <!-- 提供方应用信息，用于计算依赖关系 -->
+    <dubbo:application name="Cat"/>
+
+    <!-- 使用multicast广播注册中心暴露服务地址 -->
+    <dubbo:registry address="zookeeper://11.160.112.23:2181?backup=11.239.190.141:2181,11.239.172.213:2181"/>
+
+    <!-- 用dubbo协议在20880端口暴露服务 -->
+    <dubbo:protocol name="dubbo" port="-1"/>
+
+    <!-- 和本地bean一样实现服务 -->
+    <dubbo:service interface="com.alibaba.dubbo.test.service.CatService" ref="catService"/>
+
+    <dubbo:reference id="mouseService" interface="com.alibaba.dubbo.test.service.MouseService" />
+
+</beans>
\ No newline at end of file
diff --git a/src/main/resources/dubbo-dog.xml b/src/main/resources/dubbo-dog.xml
new file mode 100644
index 0000000..798ba73
--- /dev/null
+++ b/src/main/resources/dubbo-dog.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ - 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:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
+       xmlns="http://www.springframework.org/schema/beans"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
+
+    <!-- 提供方应用信息，用于计算依赖关系 -->
+    <dubbo:application name="Dog"/>
+
+    <!-- 使用multicast广播注册中心暴露服务地址 -->
+    <dubbo:registry address="zookeeper://11.160.112.23:2181?backup=11.239.190.141:2181,11.239.172.213:2181"/>
+
+    <!-- 用dubbo协议在20880端口暴露服务 -->
+    <dubbo:protocol name="dubbo" port="-1"/>
+
+    <!-- 和本地bean一样实现服务 -->
+    <dubbo:service interface="com.alibaba.dubbo.test.service.DogService" ref="dogService"/>
+
+    <dubbo:reference id="catService" interface="com.alibaba.dubbo.test.service.CatService" />
+
+    <dubbo:reference id="mouseService" interface="com.alibaba.dubbo.test.service.MouseService" />
+
+</beans>
\ No newline at end of file
diff --git a/src/main/resources/dubbo-lion.xml b/src/main/resources/dubbo-lion.xml
new file mode 100644
index 0000000..9dfc720
--- /dev/null
+++ b/src/main/resources/dubbo-lion.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ - 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:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
+       xmlns="http://www.springframework.org/schema/beans"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
+
+    <!-- 提供方应用信息，用于计算依赖关系 -->
+    <dubbo:application name="Lion"/>
+
+    <!-- 使用multicast广播注册中心暴露服务地址 -->
+    <dubbo:registry address="zookeeper://11.160.112.23:2181?backup=11.239.190.141:2181,11.239.172.213:2181"/>
+
+    <!-- 用dubbo协议在20880端口暴露服务 -->
+    <dubbo:protocol name="dubbo" port="-1"/>
+
+    <!-- 和本地bean一样实现服务 -->
+    <dubbo:service interface="com.alibaba.dubbo.test.service.LionService" ref="lionService"/>
+
+    <dubbo:reference id="mouseService" interface="com.alibaba.dubbo.test.service.MouseService" />
+
+    <dubbo:reference id="dogService" interface="com.alibaba.dubbo.test.service.DogService" />
+
+    <dubbo:reference id="catService" interface="com.alibaba.dubbo.test.service.CatService" />
+
+</beans>
\ No newline at end of file
diff --git a/src/main/resources/dubbo-mouse.xml b/src/main/resources/dubbo-mouse.xml
new file mode 100644
index 0000000..8e4311d
--- /dev/null
+++ b/src/main/resources/dubbo-mouse.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ - 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:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
+       xmlns="http://www.springframework.org/schema/beans"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
+
+    <!-- 提供方应用信息，用于计算依赖关系 -->
+    <dubbo:application name="Mouse" />
+
+    <dubbo:provider />
+
+    <!-- 使用multicast广播注册中心暴露服务地址 -->
+    <dubbo:registry client="curator" address="zookeeper://11.160.112.23:2181?backup=11.239.190.141:2181,11.239.172.213:2181"/>
+
+    <!-- 用dubbo协议在20880端口暴露服务 -->
+    <dubbo:protocol name="dubbo" port="-1"/>
+
+    <bean id="mouseService" class="com.alibaba.dubbo.test.service.impl.MouseServiceImpl" />
+
+    <!-- 和本地bean一样实现服务 -->
+    <dubbo:service interface="com.alibaba.dubbo.test.service.MouseService" ref="mouseService"/>
+
+</beans>
\ No newline at end of file
diff --git a/src/test/java/com/alibaba/dubbo/test/DubboFeatureTestApplicationTests.java b/src/test/java/com/alibaba/dubbo/test/DubboFeatureTestApplicationTests.java
new file mode 100644
index 0000000..0351b8e
--- /dev/null
+++ b/src/test/java/com/alibaba/dubbo/test/DubboFeatureTestApplicationTests.java
@@ -0,0 +1,16 @@
+package com.alibaba.dubbo.test;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class DubboFeatureTestApplicationTests {
+
+	@Test
+	public void contextLoads() {
+	}
+
+}
