Loading

Spring Boot:整合Dubbo

一.dubbo-boot-provider模块

maven依赖:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>

    </dependencies>

 application.properties

dubbo.application.name=dubbo-boot-provider
dubbo.registry.address=192.168.10.132:2181
dubbo.registry.protocol=zookeeper

dubbo.protocol.name=dubbo
dubbo.protocol.port=10000

 service类:

注意这里的@Service是Dubbo的注解,不是Spring的Service注解

@Service
public class UserServiceImpl implements UserService {

    @Override
    public List<User> getAll() {
        User user1 = new User(1, "张三", 12, "北京");
        User user2 = new User(2, "李四", 13, "北京");
        return Arrays.asList(user1, user2);
    }
}

 启动类:

@SpringBootApplication
@EnableDubbo//开启基于注解的dubbo功能
public class DubboBootProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboBootProviderApplication.class, args);
    }

}

二.dubbo-boot-consumer模块 

maven依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <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>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>

 消费者:

调用UserService时,用@Reference表示远程调用,而不是用@Autowired

@Controller
public class UserController {
    @Reference  //远程引用userService
    UserService userService;
    @RequestMapping("/getAll")
    @ResponseBody
    public List<User> getAll(){
        return userService.getAll();
    }
}

 application.properties

dubbo.application.name=dubbo-boot-consumer
dubbo.registry.address=zookeeper://192.168.10.132:2181

server.port=7070

 启动类:

@SpringBootApplication
@EnableDubbo
public class DubboBootConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboBootConsumerApplication.class, args);
    }

}

 三.运行两个boot主应用,在浏览器输入localhost:7070/getAll

代码已上传至github

posted @ 2020-05-26 13:18  秋风飒飒吹  阅读(309)  评论(0编辑  收藏  举报