上一篇是用的xml方式,https://www.cnblogs.com/luoa/articles/9844417.html,這篇改用注解方式。
更改的文件如下:
提供者provider部分
1,springmvc.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd" default-autowire="byName"> <!--先讓spring掃描,再讓dubbo掃描 --> <!-- 加入spring注解掃描 --> <context:component-scan base-package="com.*"/> <!-- 提供方應用信息,用於計算依賴關系 --> <dubbo:application name="dubbo_provider" /> <!-- 使用zookeeper注冊中心暴露服務地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 用dubbo協議在20880端口暴露服務 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 聲明需要暴露的服務接口 --> <!-- <dubbo:service interface="com.luo.DemoService" ref="demoService" /> --> <!-- 使用注解方式暴露接口 --> <dubbo:annotation package="com.luo" /> <aop:aspectj-autoproxy /> <!-- <context:component-scan base-package="com.luo.*" /> --> <!-- <import resource="classpath:dubbo-provider.xml" /> --> </beans>
2,接口實現類DemoServiceImpl:
package com.luo; import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Component; import com.alibaba.dubbo.config.annotation.Service; import com.luo.domain.User; //@Service("demoService") @Service //@com.alibaba.dubbo.config.annotation.Service(version = "1.0.0") public class DemoServiceImpl implements DemoService { public String sayHello(String name) { return name; } public List<User> getUser() { List<User> list = new ArrayList<User>(); for (int i = 0; i < 3; i++) { User user = new User(i, "name" + i, i); list.add(user); } return list; } }
消費者部分
1,test-web-servlet.xml:
<?xml version="1.0" encoding="UTF-8"?> <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:mvc="http://www.springframework.org/schema/mvc" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!--先讓dubbo掃描controller層,可以避免出現NullPoint空指針問題 --> <dubbo:annotation package="com.aluo.controller" /> <!-- 自動掃描controller包下的所有類,使其認為是spring mvc的控制器 路徑即為類路徑 --> <context:component-scan base-package="com.aluo.controller"></context:component-scan> <!-- 消費方應用名,用於計算依賴關系,不是匹配條件,不要與提供方一樣 --> <dubbo:application name="dubbo_consumer" /> <!-- 使用multicast廣播注冊中心暴露發現服務地址 --> <dubbo:registry protocol="zookeeper" address="zookeeper://127.0.0.1:2181" /> <!-- 配置視圖解析器 如何把handler 方法返回值解析為實際的物理視圖 根據控制器返回的字符串拼接成jsp路徑:/WEB-INF/jsp/xx.jsp --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- <import resource="classpath:/dubbo-consumer.xml" /> --> </beans>
2,Controller類,@Reference引用服務
package com.aluo.controller; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import com.alibaba.dubbo.config.annotation.Reference; import com.luo.DemoService; import com.luo.domain.User; @Controller public class HelloController { /* * @Resource(name="demoService") private DemoService demoService; */ @Reference private DemoService demoService; @RequestMapping("/welcome") public String welcome(ModelMap model) { System.out.println("begin"); System.out.println(demoService.getUser()); List<User> list = demoService.getUser(); for (User user : list) { System.out.println(user.getId()); } model.addAttribute("message", demoService.sayHello("hello dubbo")); return "welcome"; } }
運行zookeeper,服務者,tomcat,訪問:http://localhost:8080/test-web/welcome,成功,如圖:

參考:https://blog.csdn.net/cslucifer/article/details/78608246
