dubbo注解方式


上一篇是用的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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM