dubbo學習(四)配置dubbo 注解方式配置


provider(生產者)

service注解暴露服務

/**
 * 用戶管理實現類
 */
@Service //用的dubbo的注解,表明這是一個分布式服務
@Component //注冊為spring bean
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public List<UserVO> listUser() {
        List<UserVO> result = new ArrayList<>();
        List<User> list = userMapper.listUser();
        for (User user : list) {
            UserVO vo = new UserVO();
            BeanUtils.copyProperties(user, vo);
            result.add(vo);
        }
        return result;
    }
}

PS:@Service注解很容易用錯,目前有兩個包有@Service注解:

com.alibaba.dubbo.config.annotation.Service:用於標注對外暴露的dubbo接口實現類。

org.springframework.stereotype.Service:用於標注根據業務塊分離的Service的實現類,對應的是業務層(如一個dubbo方法可能調用多個業務塊的service,這些service的實現類就用Spring的注解)。

PS:若使用的是dubbo的Service注解時,在controller注入的時候,要選擇@Reference注解來進行注入。

dubbo配置

  在SpringBoot的配置文件application.yml中配置dubbo信息

dubbo:
  application:
    name: user-service
  registry:
    address: zookeeper://127.0.0.1:2181
  protocol:
    port: 20880
    name: dubbo

啟動類配置

@SpringBootApplication
@EnableDubbo
@MapperScan(basePackages = "zhbf.user.mapper")//配置mapper掃描的路徑(Mybatis的mapper接口)
public class UserBootStarter {

    public static void main(String[] args) {
        SpringApplication.run(UserBootStarter.class, args);
        System.out.println("==========USER模塊啟動完成!==========");
    }

}

  @Configuration:啟動類注解。@SpringBootApplication = (默認屬性)@Configuration + @EnableAutoConfiguration + @ComponentScan。

  @EnableDubbo:開啟注解Dubbo功能 ,其中可以加入scanBasePackages屬性配置包掃描的路徑,用於掃描並注冊bean

  @MapperScan:指定mybatis的mapper接口存放路徑,用於掃描mapper接口並注冊

consumer(消費者)

Reference注解引用服務

/**
 * 用戶管理Controller
 */
@RestController
@RequestMapping(value = "/userManage")
public class UserManageController {

    @Reference
    private UserService userService;

    /**
     * 查詢用戶集合
     * @return
     */
    @RequestMapping("queryListUser")
    public String queryListUser() {
        List<UserVO> list = userService.listUser();
        return list.toString();
    }
}

  @Component:(把普通pojo實例化到spring容器中,相當於配置文件中的 <bean id="" class=""/>) 泛指各種組件,當我們的類不屬於各種歸類的時候(不屬於@Controller、@Services等的時候),我們就可以使用@Component來標注這個類。

例:<context:component-scan base-package=”com.*”> 
上面的這個例子是引入Component組件的例子,其中base-package表示為需要掃描的所有子包。 

  @Reference:與@Autowired、@Resource注解功能類似,用於依賴注入,一般注入的是分布式的遠程服務的對象,需要dubbo配置使用

dubbo配置

  在SpringBoot的配置文件application.yml中配置dubbo信息(這里以application.properties舉例)

# dubbo配置
dubbo.application.name=web-service
dubbo.registry.address=zookeeper://127.0.0.1:2181 

啟動類配置

@SpringBootApplication
@EnableDubbo
public class WebBootStarter {

    public static void main(String[] args) {
        SpringApplication.run(WebBootStarter.class, args);
        System.out.println("==========WEB模塊啟動完成!==========");
    }

}

PS:@ComponentScan主要就是定義掃描的路徑從中找出標識了需要裝配的類自動裝配到spring的bean容器中。

調用服務

  http://localhost:8081/userManage/queryListUser


免責聲明!

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



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